Wpis z mikrobloga

czy jest ktos w stanie w prosty sposob wytlumaczyc mi co daje stosowanie klas w programowaniu? czytam o tym i za cholere nie wiem po co to jest.. Dodam ze ucze sie raczej hobbistycznie #programowanie #pomocy #pytanie
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Muszalski:

Klasa nie jest samodzielnym bytem, lecz szablonem do tworzenia nowych obiektów określonego typu i posiadających określone zachowanie. Obiekt utworzony na podstawie danej klasy nazywany jest jej instancją, a proces jego tworzenia - instancjonowaniem.


Poszczególne instancje klasy posiadają ten sam zbiór zachowań i atrybutów, lecz różnią się przechowywanymi w nich wartościami. Przykładowo, klasa Samochód opisuje pojęcie „samochodu“ poprzez wymienienie charakteryzujących go atrybutów: prędkości maksymalnej, mocy silnika, producenta czy modelu. Jednak
  • Odpowiedz
@Muszalski: @Spook: Z tą przejrzystością kodu to bym się kłócił - wszystko zależy od programisty. Klasy tylko pomagają okiełznać ten b----l.

Za to przekazywanie kodu dalej ma sens: dostajesz klasę, interfejs, pod to piszesz. Reszta Cię nie interesuje (a przynajmniej nie powinna).

@knysha: Mi się wydaje że on tak bardziej ogólnie chciał, jak to może życie ułatwić.
  • Odpowiedz
@parsiuk: no tak, ale na pewno jest bardziej przejrzysty niż kod pisany strukturalnie.

@Muszalski: pamiętaj też o tym, by komentować kod. Tylko nie pchaj komentarzy wszędzie gdzie się da, bo jeżeli kod jest w miarę przejrzysty, to można samemu szybko domyśleć się co robi dla przykładu dana metoda.
  • Odpowiedz
@Spook: Piszę raczej dla siebie, ale o komentarzach nie zapominam ;>

@parsiuk: @knysha: Czytałem już sporo definicji w tych wszystkich książkach i internetach, ale nie mogę przebrnąć przez pierwsze lekcje, bo tak naprawdę nie wiem jaka do końca jest korzyść z wprowadzania klas, zamiast z korzystania z tych podstawowych rzeczy czyli zmiennych funkcji itp.

Wybaczcie, że piszę o takich podstawach, ale jestem kompletnym laikiem, ale chciałbym
  • Odpowiedz
@Muszalski: A ja powiem z innej strony: zapomnij o komentarzach. Kod się zmienia i z czasem lubi się działanie rozjeżdżać z tym co jest napisane w komentarzu. Po np. paru miesiącach wracasz do kodu gdzie działanie rozjechało się z komentarzem i nie wiesz czemu ufać.

Jak bez komentarza nie wiesz co robi dana metoda czy klasa to znaczy, że ta jest zbyt duża lub zbyt skomplikowana.
  • Odpowiedz
@Muszalski: Wiesz, wydaje mi się że klasy to raczej wyższy sposób organizacji kodu. Koniec końców "ciało" klasy to i tak będzie ten sam, zwykły kod który piszesz teraz. Tylko że klasy ładniej oddają otaczający nas świat: wszystko jest obiektem.

Wiem że już sporo książek widziałeś ale polecam "Symfonia C++", Grębosza. Facet na przykładach tłumaczy jaka jest przewaga klasy w konkretnym przypadku. Pokazuje też świetnie podejście do projektowania.

Oczywiście jak piszesz
  • Odpowiedz
@Muszalski: Obiektowość sama z siebie niewiele daje. Główną jej (ogólną) zaletą jest to, że jedna wystarczająco ogarniająca osoba w projekcie zaprojektuje diagram klas, który po zaimplementowaniu przez kilku- (lub więcej) osobowy zespół (przy uwzględnieniu kilku prostych reguł) będzie wykonany poprawnie, łatwy do sprawdzenia i łatwy do rozwijania. Przyglądając się tematowi bliżej, główne zalety, które pomagają w osiągnięciu tego co powyżej, to:

- hermetyzacja - obiekty są "czarnymi skrzynkami", nikt z zewnątrz nie może "wejść z butami" do środka i napaskudzić, np. pozmieniać wartości właściwości obiektu (np. ustawić ilości wierzchołków w wielokącie na -0.3);

- dziedziczenie - zdecydowanie ułatwia "wyłączenie przed nawias" wspólnych fragmentów kodu, np: wszystkie obiekty klasy Wielokat rysuje się tak samo (mając współrzędne wierzchołków), nie trzeba więc specjalnie implementować metody rysuj() w klasach Trojkat czy Prostokat pod warunkiem, że klasy te dziedziczą po klasie Wielokat, która definiuje metodę
  • Odpowiedz
@parsiuk: Dzięki za komentarz. Czytałem Grębosza, ale właśnie tam zaczęły się moje problemy z rozumieniem samej istoty klasy, przez co nie po prostu nie udało mi się tego nauczyć, dlatego pytam was tutaj teraz :)

@cochese: Znalazłem sporo, tak jak pisałem, czytałem parę kursów, książek, ale w żadnej nie znalazłem takiego "łopatologicznego" wytłumaczenia, które bym zrozumiał. Piszę programy raczej dla siebie, nie zamierzam osiągnąć nie wiadomo jakiego stopnia
  • Odpowiedz