-
X-Received: by 10.140.26.47 with SMTP id 44mr184904qgu.9.1392762080533; Tue, 18 Feb
2014 14:21:20 -0800 (PST)
X-Received: by 10.140.26.47 with SMTP id 44mr184904qgu.9.1392762080533; Tue, 18 Feb
2014 14:21:20 -0800 (PST)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin1!goblin.stu.neva.ru!k15no23706347qaq.0!news-out.google.com!s3ni
24178qas.0!nntp.google.com!k15no23706344qaq.0!postnews.google.com!glegroupsg200
0goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 18 Feb 2014 14:21:20 -0800 (PST)
In-Reply-To: <le0d01$46k$1@dont-email.me>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=151.248.32.53;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 151.248.32.53
References: <ldaa9r$3j5$1@speranza.aioe.org>
<9...@g...com>
<52fccceb$0$2362$65785112@news.neostrada.pl>
<6...@g...com>
<52fceef0$0$2140$65785112@news.neostrada.pl>
<1...@g...com>
<ldv7fu$3vq$1@dont-email.me>
<6...@g...com>
<a...@g...com>
<ldvj3g$28c$1@dont-email.me>
<6...@g...com>
<ldvqkt$bnu$1@dont-email.me>
<4...@g...com>
<c...@g...com>
<2...@g...com>
<d...@g...com>
<e...@g...com>
<le0d01$46k$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b...@g...com>
Subject: Re: David West: OOP is Dead
From: firr <p...@g...com>
Injection-Date: Tue, 18 Feb 2014 22:21:20 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:205194
[ ukryj nagłówki ]W dniu wtorek, 18 lutego 2014 20:40:49 UTC+1 użytkownik toslaw napisał:
> 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 ;)
troche glupawe te przyklady (troche to malo
powiedziane)
Nie wiem czy mam cos istotnego do dodania pozatym
co powiedziane - jesli chodzi o wlasnie utrzymywanie programu to własnie (jak ktos w
tym watku zwrocil uwage) obawiam sie ze ta 'pasożytnicza struktura' setupu roznych
obiektów i ich konfiguracji raczej pogarsza sprawe niz ja polepszac (*)
z punktu widzenia obiektu ktory ma jako pola
referencje do innych obiektow to jeszcze moze nie jest takie złe, ale ten 'setup i
konfiguracja'
i utrzymywanie tego to raczej koszmar (pisze 'raczej 'bo naprawde dawno nie grzebalem
w obiektowym programie i o tyle nie kojarze na ile uciezliwe to by dla mnie obecnie
było, czy bardzo czy moze tylko pierwiastek z bardzo ) <i to chybabyloby wszystko na
ten temat>
(*) tymbardziej ze system modulowy dziala po prostu swietnie, choc w c dobrze bybylo
go poprawic
1) o typowanie symboli w binarnych modulach tak zeby nie trzebbylo pisac naglowków
funkcji
2) o slowo kluczowe jawnie wypisujace u gory modulu z jakimi innymi modulami go
linkowac (tak zeby linker nie linkowal wszystkiego z wszystkim i zeby byla tez
kontrola zabezpieczenie przed pomylkami
no i tez rodzaj komentarza itp)
3) o mozliwosc podania nazwy modulu przed funkcja tak zeby mozna bylo rozroznic w
razie konfliktów,
plut tez czasem mozna to wykorzystac jako rodzaj komentarza
( (4) ... mozliwe ze tez o inne daleko idace usprawnienia ale to juz rzecz z troche
innej paczki)
Następne wpisy z tego wątku
- 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.
- 20.02.14 04:30 A.L.
Najnowsze wątki z tej grupy
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
Najnowsze wątki
- 2024-12-30 Gdańsk => Software .Net Developer <=
- 2024-12-30 Białystok => Full Stack web developer (obszar .Net Core, Angular6+) <
- 2024-12-30 Białystok => Programista Full Stack (.Net Core) <=
- 2024-12-30 Moduł BT BLE 5.0
- 2024-12-30 Łódź => Application Security Engineer <=
- 2024-12-30 Lublin => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-30 Nowy Outlander PHEV w PL
- 2024-12-30 Warszawa => Key Account Manager <=
- 2024-12-30 Katowice => Key Account Manager (ERP) <=
- 2024-12-28 Śmiechu KOOOOOOPA ;-)
- 2024-12-29 Pomiar amplitudy w zegarku mechanicznym
- 2024-12-28 Antyradar
- 2024-12-28 Deweloper przegral w sadzie musi zwrócic pieniądze Posypia sie kolejne pozwy?
- 2024-12-28 Warszawa => Full Stack .Net Engineer <=
- 2024-12-28 Warszawa => Sales Assistant <=