Zatrzymanie się na metodach – co robić dalej?

0

Witam zatrzymalem się na metodach i nie wiem co robić chyba ich nie rozumiem do końca..

2

Ucz się dalej – dotąd, aż je zrozumiesz.

1

Trzeba zrobić kilka kroków wstecz, dobrze się rozpędzić i już się na metodach nie zatrzymasz... skończysz na Delphi...

2

Co dokładnie rozumiesz przez "zatrzymanie się na metodach"? ;)

Jeżeli coś sprawia Ci trudność, postaraj się znaleźć sobie swój sposób na zrozumienie tego. Pomyśl o jakimś przykładzie np. o telefonie komórkowym - masz możliwość dzwonienia, pisania smsów, grania w X grę, włączenia, wyłączenia go - to wszystko może być przedstawione w postaci metod klasy CellPhone (pseudokod poniżej):

class CellPhone
    call()...
    sendMessage()...
    runApp(string appName)...
    powerOn()
    powerOff()
6

@Wielki Zły Rozpruwacz: gratulacje. Właśnie po raz pierwszy doznałeś tego cudownego uczucia. Witamy w rodzinie. Teraz będzie już tylko gorzej, bo pewnie często będziesz miał takie przystanki. Jak sobie z nimi poradzić?

Do każdego z nas trafia inny przekaz. Jeżeli stu osobom wytłumaczysz coś w ten sam sposób, to istnieje spora szansa, że trafisz tylko do garstki osób, która rezonuje z Twoimi przykładami. Reszta coś tam załapie, albo wcale. Rozwiązanie jest proste. Czytasz o metodach dotąd, aż nie zrozumiesz. Wpisujesz w google: what are methods in programming i jedziesz od góry. Jak będziesz miał szczęście, to trafi do Ciebie pierwszy, czy drugi link. Jak będziesz miał pecha, to nie znajdziesz nic. Co teraz? Próbujesz zapytać googla o to samo, tylko inaczej: oop methods explained lub oop methods for dummies.

Dalej nic? No to teraz to samo tylko na youtube. Oglądasz kursy o podstawach programowania i przewijasz do klas i metod. Słuchasz wytłumaczenia. Nie rozumiesz? To szukasz książek.... Czytasz... kartkujesz do rozdziału z metodami i czytasz. Rozumiesz? Nie? Na tym etapie pewnie coś już tam kminisz, w końcu przeczytałeś wszystkie możliwe materiały... więc tworzysz temat na forum i prosisz o wyjaśnienie swoich wątpliwości. I pewnego pięknego dnia uświadomisz sobie, że rozumiesz co to są metody:

title

Ale później pojawią się klasy abstrakcyjne i interfejsy... No cóż, nie ma lekko.

2
Wielki Zły Rozpruwacz napisał(a):

Witam zatrzymalem się na metodach i nie wiem co robić chyba ich nie rozumiem do końca..

Pokonały Cię metody? Co Ty bidoku zrobisz jak nadejdzie refleksja, generyki, lambdy, asynchroniczność? Sznur, gruba gałąź i nic tylko się wieszać :-)

1
Wielki Zły Rozpruwacz napisał(a):

Witam zatrzymalem się na metodach i nie wiem co robić chyba ich nie rozumiem do końca..

Z jakiej książki się tego uczysz? Czego dokładnie nie rozumiesz w metodach?

0
Haskell napisał(a):
Wielki Zły Rozpruwacz napisał(a):

Witam zatrzymalem się na metodach i nie wiem co robić chyba ich nie rozumiem do końca..

Z jakiej książki się tego uczysz? Czego dokładnie nie rozumiesz w metodach?

Do czego można wykorzystać i działania.

Uczę się z darmowego kursu 4programmers.

Chciałem użyć metod do mojej gry rpg:

Enemy.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleRPG
{
    public class Enemy
    {
        public string[] enemyName = new string[256];
        public int[] enemyHP = new int[256];
        public int[] enemyDMG = new int[256];
    }

}

Monsters.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleRPG
{
    public class Monsters
    {
        Enemy.enemyName[1] = "Gladiator";
    }
}

Chciałem po prostu zrobic sobie skrócenie kodu by nie robić milion zmiennych i po prostu mieć coś takiego enemy(nazwa,hp,dmg).

1
    public class Enemy
    {
        public string[] enemyName = new string[256];
        public int[] enemyHP = new int[256];
        public int[] enemyDMG = new int[256];
    }

Aj, aj... kompletnie nie tędy droga. Nie dziwię się, że nie rozumiesz metod, ponieważ nie rozumiesz dużo bardziej podstawowych elementów języka. Na Twoim miejscu dałbym sobie spokój z kursem na 4p i kupiłbym jakąś, porządną książkę.

0

Podstawowe tzn? A książka jaka? Myślałem nad C# Rusz głową.

1

Polecałem wielu osobom i polecę i Tobie. Sam miałem okazję poczytać po jej premierze i mam dobre zdanie:
https://helion.pl/ksiazki/c-6-0-kompletny-przewodnik-dla-praktykow-wydanie-v-mark-michaelis-eric-lippert,ch6kpp.htm#format/d

Możliwe, że jest nowsza wersja tej pozycji (do C# 7.0). Jeśli tak to kupuj w ciemno.

0
Hispano-Suiza napisał(a):

Polecałem wielu osobom i polecę i Tobie. Sam miałem okazję poczytać po jej premierze i mam dobre zdanie:
https://helion.pl/ksiazki/c-6-0-kompletny-przewodnik-dla-praktykow-wydanie-v-mark-michaelis-eric-lippert,ch6kpp.htm#format/d

Możliwe, że jest nowsza wersja tej pozycji (do C# 7.0). Jeśli tak to kupuj w ciemno.

Jest, ale po ang... Ta 6.0 będzie tez okej?

0

Mam coś do napisania w javascripcie. I też zatrzymałem się na metodach.

0
Wielki Zły Rozpruwacz napisał(a):
Hispano-Suiza napisał(a):

Polecałem wielu osobom i polecę i Tobie. Sam miałem okazję poczytać po jej premierze i mam dobre zdanie:
https://helion.pl/ksiazki/c-6-0-kompletny-przewodnik-dla-praktykow-wydanie-v-mark-michaelis-eric-lippert,ch6kpp.htm#format/d

Możliwe, że jest nowsza wersja tej pozycji (do C# 7.0). Jeśli tak to kupuj w ciemno.

Jest, ale po ang... Ta 6.0 będzie tez okej?

C# 6 jest od lipca 2015 (chyba). Mamy koniec 2018 więc spokojnie. Przejście do nowszych wersji to będzie kosmetyka w porównaniu z nauką od zera. Dlaczego nie po angielsku? Jest dosyć prostym językiem napisana. Ale wybór należy do Ciebie. Myślę, że Ci sami autorzy gwarantują w nowszym wydaniu taka samą jakość ;-)

0

W programowaniu obiektowym dzieli się program na różne obiekty (jak zapewne wiesz obiekty mogą należeć do różnych klas - klasa to taki jakby wzorzec dla obiektu. W ten sposób z jednej klasy można zrobić np. 1000 obiektów jednego typu).

No i program ogólnie składa się z różnego rodzaju obiektów, takich jakby "części programu", które się ze sobą potem komunikują. I teraz - sposób komunikacji między obiektami, takie jakby komunikaty czy polecenia, które obiekty sobie wysyłają między sobą - nazywane są właśnie "metodami" (w grze np. klasa Enemy mogłaby mieć metodę "kill", która zabijałaby wroga. Albo metodę "draw", która rysowałaby wroga na ekranie. Generalnie metody oznaczają pewne działanie, chociaż nie zawsze).

Ale najpierw spróbuj załapać, po co są właściwie obiekty, bo:

  public class Enemy
    {
        public string[] enemyName = new string[256];
        public int[] enemyHP = new int[256];
        public int[] enemyDMG = new int[256];
    }

O ile nie robisz jakiegoś ECS (Entity-Component-System: taki wzorzec projektowy w grach, ale to już wyższa szkoła jazdy) to takie podejście jak wyżej zdradza, że nie rozumiesz specjalnie, po co są obiekty.

Zamiast zrobić klasę Enemy dla obiektów typu "wróg" i dla każdego wroga utworzyć jeden obiekt typu Enemy (który miał właściwości takie jak name, HP czy DMG - to tworzysz klasę o nazwie Enemy, która zawiera kilka tablic dla każdej właściwości.

Albo to jakaś próba zaimplementowania ECS (wtedy podobne patterny się robi, ale jednak z wiedzą dlaczego tak się robi), albo zwykłe programowanie proceduralne opakowane w OOP. A raczej programowanie tablicowe jeśli jest coś takiego (co samo w sobie nie musi być złe, niektórzy tak specjalnie robią. Ale mimo wszystko nie tędy droga do zrozumienia OOP).

0
LukeJL napisał(a):

W programowaniu obiektowym dzieli się program na różne obiekty (jak zapewne wiesz obiekty mogą należeć do różnych klas - klasa to taki jakby wzorzec dla obiektu. W ten sposób z jednej klasy można zrobić np. 1000 obiektów jednego typu).

No i program ogólnie składa się z różnego rodzaju obiektów, takich jakby "części programu", które się ze sobą potem komunikują. I teraz - sposób komunikacji między obiektami, takie jakby komunikaty czy polecenia, które obiekty sobie wysyłają między sobą - nazywane są właśnie "metodami" (w grze np. klasa Enemy mogłaby mieć metodę "kill", która zabijałaby wroga. Albo metodę "draw", która rysowałaby wroga na ekranie. Generalnie metody oznaczają pewne działanie, chociaż nie zawsze).

Ale najpierw spróbuj załapać, po co są właściwie obiekty, bo:

  public class Enemy
    {
        public string[] enemyName = new string[256];
        public int[] enemyHP = new int[256];
        public int[] enemyDMG = new int[256];
    }

O ile nie robisz jakiegoś ECS (Entity-Component-System: taki wzorzec projektowy w grach, ale to już wyższa szkoła jazdy) to takie podejście jak wyżej zdradza, że nie rozumiesz specjalnie, po co są obiekty.

Zamiast zrobić klasę Enemy dla obiektów typu "wróg" i dla każdego wroga utworzyć jeden obiekt typu Enemy (który miał właściwości takie jak name, HP czy DMG - to tworzysz klasę o nazwie Enemy, która zawiera kilka tablic dla każdej właściwości.

Albo to jakaś próba zaimplementowania ECS (wtedy podobne patterny się robi, ale jednak z wiedzą dlaczego tak się robi), albo zwykłe programowanie proceduralne opakowane w OOP. A raczej programowanie tablicowe jeśli jest coś takiego (co samo w sobie nie musi być złe, niektórzy tak specjalnie robią. Ale mimo wszystko nie tędy droga do zrozumienia OOP).

Chciałem własnie zrobić tak jakby proceduralne tworzenie przeciwników Nazwa, DMG, Życie...

Ale jednak nie rozumiem co ja tutaj zrobilem. Czyli mam zacząć od obiektów? (Nie wiem co to).

2

Wyobraź sobie, że robisz planszówkę. Wtedy to, co byłoby obiektem/przedmiotem/pojęciem w planszówce, może być obiektem w kodzie.

Np. jeśli jest 4 graczy, to w kodzie możesz zrobić, że będą 4 obiekty typu Player.
Jeśli gracz ma swoje pionki, to w kodzie możesz zrobić że każdy gracz ma w sobie kolekcję(tablicę, listę itp.) obiektów typu Pawn.
Każdy pionek (obiekt klasy Pawn) mógłby mieć w sobie właściwości typu pozycja na planszy, rodzaj pionka itp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1