-
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
- 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
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
Najnowsze wątki
- 2024-11-16 Łódź => Frontend Engineer (Three.js) <=
- 2024-11-16 Warszawa => Expert Recruiter 360 <=
- 2024-11-16 Żerniki => Starszy specjalista ds. księgowości/ Samodzielny księgo
- 2024-11-16 Pruszków => Team Leader (PHP+React) <=
- 2024-11-16 Warszawa => Senior Cloud Consultant (AWS) <=
- 2024-11-16 Warszawa => Sitecore Developer <=
- 2024-11-16 Akta sprawy Kajetan Poznański
- 2024-11-16 Warszawa => OpenText ECM Specialist <=
- 2024-11-16 Warszawa => Account Manager - Sprzedaż Usług Rekrutacyjnych <=
- 2024-11-16 Warszawa => Account Manager - Usługi rekrutacyjne <=
- 2024-11-15 Google Play
- 2024-11-15 Szybcy i wściekli
- 2024-11-16 Opis produktu z Aliexpress
- 2024-11-15 No proszę, a śmialiście się z hindusów.
- 2024-11-14 Zewnętrzne napięcie referencyjne LM385 1,2V -> 100mV dla ICL7106, Metex M-3800