-
Data: 2014-02-18 20:40:49
Temat: Re: David West: OOP is Dead
Od: toslaw <s...@n...4u.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]firr <p...@g...com>:
> > dla przykladu czy nie lepiej osadzic pixelbufora
> > blittera i window od razu w Game, lub jeszcze
> > inaczej na przyklad window w game a pixelbufor w
> > window z kolei blitter w pixelbufor lub jeszcze inaczej? Co o tym decyduje?
> w systemie modułowym cały ten 'setup' i 'konfiguracja' wzajemnej
> widzialnosci miedzy tymi obiektami ktora tutaj jest wypączkowywana w runtime
> (dla mnie brzydka i ograniczona, choc jestem chetny uslyszec jak ktos chce
> tego braonic) jest po prostu statycznie dany w bardzo ładnej i czystej
> formie w systemie modułowym , gdzie u mnie wygladołoby to mw tak (nie
> mialbym modulu game ale zamiast niego moduł ramka, kod updatujacy i rysujacy
> dana ramke
[bzzz]
Aby zrozumieć, że OOP nie ogranicza w żaden sposób programowania, może
powinieneś wyobrazić sobie nie sam akt pisania programu, ale jego przyszły
rozwój.
To znaczy: napisałeś program, który w 100% wypełnia zachcianki klienta, czyli
rysuje piksel na ekranie. Potem natomiast przychodzi drugi klient, i zamawia u
ciebie program, który rysuje nie piksel, ale prostokąt. Teraz, aby nie kopiować
projektu A do katalogu B, i nie posiadać dwóch wersji dość podobnego kodu
źródłowego, mógłbyś kombinować tak, żeby tylko dopisać do kodu A funkcję
rysowania prostokątów, ale tak, aby funkcja rysowania pikseli nie została
usunięta. Czyli, aby program był w stanie rysować i piksele i prostokąty, ale
nie obydwa na raz.
Twój kod modułowy może osiągnąć to np. tak:
1) W funkcji rysującej piksel możesz dodać warunek:
if(pierwszyKlient) { rysujPiksel(); } else { rysujProstokąt(); }
Jednak, gdy przyjdzie trzeci klient, i zechce program, który blituje od tyłu do
przodu, a nie tak, jak pierwszych dwóch klientów, od przodu do tyłu, sytuacja
może się skomplikować (szczególnie jak przyjdzie kolejnych 10 klientów z
kolejnymi zachciankami).
2) Możesz wyrzucić funkcję rysującą do oddzielnego pliku cpp, dopisać nowy plik
cpp, który implementuje tą samą funkcję, ale zamiast piksela rysuje prostokąt.
Jednak, gdy przyjdzie klient, który zechce, by na ekranie został narysowany
prostokąt, a na nim piksel, nie będziesz mógł wykorzystać obu plików cpp
jednocześnie. Będziesz zmuszony stworzyć trzeci plik, który rysuje prostokąt i
piksel, będzie on jednak powielał kod i z pierwszego pliku cpp, i z drugiego.
3) Masz jakiś inny pomysł? ;)
Mój kod obiektowy wymaga stworzenia nowego interfejsu logiki rysowania i dwóch
klas:
class RysujPiksel: public LogikaRysowania { };
class RysujProstokąt: public LogikaRysowania { };
Sama funkcja rysująca wykorzystuje klasę LogikaRysowania, więc automatycznie
akceptuje wszystkie klasy, które ją dziedziczą. Wybór, która klasa ma zostać
użyta, może być dokonany podczas działania programu. Może być to jedna klasa,
albo obie i nie trzeba wybierać, które pliki skompilować, a których nie ;)
Następne wpisy z tego wątku
- 18.02.14 23:21 firr
- 18.02.14 23:52 firr
- 19.02.14 07:57 toslaw
- 19.02.14 09:41 firr
- 19.02.14 10:54 firr
- 19.02.14 10:58 g...@g...com
- 19.02.14 11:30 firr
- 19.02.14 12:01 firr
- 19.02.14 14:32 firr
- 19.02.14 15:51 A.L.
- 19.02.14 16:10 A.L.
- 19.02.14 18:26 g...@g...com
- 19.02.14 20:20 A.L.
- 20.02.14 04:19 A.L.
- 20.02.14 04:27 A.L.
Najnowsze wątki z tej grupy
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
Najnowsze wątki
- 2025-12-30 Aeor2 i ciągły internet 512kb
- 2025-12-30 Czy prohibicja (reklamowa) obejmuje Św. Mikołaja (przerośniętego krasnala)? :-)
- 2025-12-30 Zegary DCF
- 2025-12-29 Greta Thunberg aresztowana w Londynie za wsparcie zdelegalizowanej grupy [Palestine Action - przyp. JMJ]
- 2025-12-29 Sarkozy
- 2025-12-29 Czujnik
- 2025-12-29 Warszawa => Konsultant Microsoft Dynamics AX/365 SCM Consultant - Serv
- 2025-12-29 Warszawa => IT Recruiter <=
- 2025-12-29 Warszawa => Solution Architect (Workday) - Legal Systems <=
- 2025-12-29 Warszawa => Microsoft Dynamics 365 Finance Consultant <=
- 2025-12-29 Warszawa => Senior Java Developer <=
- 2025-12-29 Katowice => Key Account Manager <=
- 2025-12-29 MON nabyło Hutę Częstochowa. "Historyczne znaczenie"
- 2025-12-28 Czwarta doba strajku na głębokości 500 metrów. "Ministerstwo robi sobie z nas jaja"
- 2025-12-29 Kolejny kraj [WB - przyp. JMJ] zakazuje chowu klatkowego. W Polsce żyje tak 40 mln kur




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]