• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki sens programowania obiektowego?

VPS Starter Arubacloud
0 głosów
1,063 wizyt
pytanie zadane 11 grudnia 2016 w C i C++ przez Pan Piguła Nowicjusz (130 p.)

Cześć, 

Mam problem ze zrozumieniem idei programowania obiektowego, który jak dla mnie ładnie wygląda tylko w teorii. 

Załóżmy że mamy grę, w której:

  • obiekt [silnik_turbinowy] to obiekt klasy [silnik], który jest częścią:
  • obiektu [niszczyciel] który jest obiektem klasy [okręt], który jest częścią:
  • obiektu [grupa_uderzeniowa_6], który jest obiektem klasy [flota], który jest reprezentowany przez ikonę statku na ekranie.

Załóżmy że chcę określić prędkość, która będzie limitowana przez najwolniejszy silnik we flocie. Muszę znać więc: nazwę obiektu [flota], nazwy obiektów stanowiących jej część (np. [niszczyciel_Sommers]) i w końcu jaki silnik został użyty dla niszczyciela [silnik turbinowy] aby odczytać jego prędkość maksymalną. Jak mam to na papierze, to wiem skąd i jak pobierać dane. 

Ale skąd ten bidny C++ ma wiedzieć że klikając w miejscu X,Y na pulpicie chcę znać nazwę tego obiektu, obiektów składowych i w końcu nazwę silnika aby pobrać te konkretnie akurat dane?

Inaczej mówiąc: jak zrobić, aby klikając w ikonę statku dokopać się do danych składowych tego obiektu, nie znając przecież wcześniej jego nazwy (bo przecież program nie wie, o dane jakiego obiektu będę pytał). 

Najbardziej prymitywne dla mnie rozwiązanie to przechowywać listę utworzonych obiektów w tablicy zewnętrznej name[] = {flota_obronna, zespol_1, zespol_3, grupa uderzeniowa_6, ...}

sprawdzić lokalizacje w oparciu o mys: czy X_mouse = x.name[4](),

//ustalam nazwę obiektu

for(int q=1;...

if (X_mouse = x.name[q]) // odczytuje lokalizacje x przegladajac cala tablice obiektow zgromadzaną w tablicy name[];

//ustalam ilość okrętów we flocie // moze byc rowna, 1 okret to tez flota

ile = ships_in_fleet.fleet(); <<zmienna fleet jako nazwa wywołanego obiektu?

//dla kazdego z "ile" sprawdzam jaki typ okretu

for (int k=1...  

typ_okretu = type_ile.fleet();  << łączenie stringów jako type_ + IntToStr(ile) daje kolejną zmianną: nazwę typu okrętu

//dla kazdej klasy sprawdzam jaki silnik  

typ = silnik.typ_okretu();

//finalnie sprawdzam predkosc silnika

predkosc = speed.typ();

Za każdym razem muszę użyć zmiennej do odczytania nazwy obiektu - bez sensu...

Ale może właśnie tak ma być i tak to ma działać? Chyba że akurat w powyższym przypadku programowanie obiektowe nie ma zastosowania...

3 odpowiedzi

+1 głos
odpowiedź 11 grudnia 2016 przez spokojny Nałogowiec (28,630 p.)
Programowanie obiektowe pomaga przy pisaniu programów w dużej grupie programistów, dlatego w Javie jest tak to promowane w biznesowym programowaniu. Raz napisane programy nie trzeba w kółko pisać na nowo. Czy poszczególne ich, składniki, klasy. Ale uważam że jest trudniejsze od programowania strukturalnego na początek, czy do małych projektów, programów. Samotny programista raczej woli takie języki jak C++, Python, gdzie do małych programów nie musi zagłębiać się od razu w obiektowość i może pisać proceduralnie czy nawet funkcyjnie. To tylko moja własna opinia i spostrzeżenia, nie lubię Javy i obiektowości w niej.
0 głosów
odpowiedź 11 grudnia 2016 przez Rasty Początkujący (470 p.)
edycja 11 grudnia 2016 przez Rasty
Ja tak samo nie mogłem pojąc po co te obiektowe pierdoły tylko ja w PHP, tak samo nadawanie zmiennym private, protected itp. Przecież jak ktoś ma dostęp do kodu i tak sobie to zmieni jak chce, po co utrudniać rozbudowę. Ogólnie jakoś ciężko mi znaleźć sens w niektórych zamysłach tworców danego języka programowania, ale może to przez to, że jestem leworęczny i pozostaje mi sie z tym pogodzić nie zagłębiać w sens.
komentarz 11 grudnia 2016 przez mbabane Szeryf (79,280 p.)
Pewnie chodzi glownie o to ze te wszystkie konwencje sa tworzone z mysla o najwyzszym poziomie czyli upraszczajac do pracy w grupie, wtedy kazdy musi przestrzegac tych przyjetych reguł żeby nikt nie marnowal czasu na tlumaczenia kodu.
–5 głosów
odpowiedź 11 grudnia 2016 przez Boshi VIP (100,240 p.)
Nie czytałem, bo za dużo, ale po 3 pierwszych zdaniach stwierdzam, że brak ci wiedzy i nie wiesz jak to wykorzystać.
1
komentarz 11 grudnia 2016 przez Evelek Nałogowiec (28,960 p.)
Boshi leci na rekord minusów. :D
komentarz 11 grudnia 2016 przez Boshi VIP (100,240 p.)
A bo minusują kretyni którzy nie widzą sensu odpowiedzi. Skoro ktoś nie wie do czego służy programowanie obiektowe i dlaczego jest tak powszechne to nie ma pojęcia o architekturze.
Serio, mam klepać po pleckach i tłumaczyć, lub przekonywać po co to jest?
komentarz 11 grudnia 2016 przez Evelek Nałogowiec (28,960 p.)
Jak programowałem proceduralnie w C++ to też się zastanawiałem nad korzyściami z obiektowości. Teraz, gdy ją poznałem, do tego zainteresowałem się Gitem dostrzegam jak ważne jest programowanie obiektowe. Daje nam to porządek, łatwiejsze zarządzanie projektem, wykorzystywanie uprzednio napisanych klas/funkcji co zaoszczędzą pamięć (i czas). Poza tym w pracy zespołowej każdy może skupić się nad danym "fragmentem" programu. Napisać własną klasę. Trzeba się tej obiektowości nauczyć, aby dostrzec zalety, bo samo wymienienie zalet jeszcze nie jest w pełni przekonujące, jeśli ktoś nie wie jak ona wygląda i jak się projektuje obiektowo.

Podobne pytania

+1 głos
1 odpowiedź 314 wizyt
0 głosów
3 odpowiedzi 509 wizyt
pytanie zadane 1 lutego 2017 w PHP przez JakisNowy Nowicjusz (150 p.)
+3 głosów
1 odpowiedź 255 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...