Jarosław
Żeliński
Analityk i
Projektant Systemów
Temat: A ja się dziwię programistom, przepraszam Was...
mamy coś takiego (źr. http://bircza.net.pl/pascal%5Cpojecie_programowania_ob..., cytuje całość bo ważna:[i]Programowanie, w którym program tworzony jest za pomocą obiektów
nazywamy programowaniem obiektowym. Obiektem nazywa się tutaj
podstawowy element programu, łączący opis stanu pewnego elementu
rzeczywistości opisywanego przez program z jego zachowaniem (czyli
funkcjami, lub inaczej mówiąc metodami obiektu).
Programowanie obiektowe łączy w całośd dane i funkcje na nich działające.
Obiektowe podejście pozwala łączyd cechy obiektów z ich zachowaniem.
Ponadto pozwala na klasyfikowanie obiektów podobnych – obiekty są tutaj
częścią klas (reprezentujących typ obiektu o określonym zachowaniu).
Programowanie obiektowe bliższe jest naturalnemu
sposobowi opisu rzeczywistości.
Obiekt jest modułem, z którego programista buduje cały program. Obiekt w
swojej strukturze zawiera dane zwane polami i funkcje zwane metodami.
Aby móc stworzyć w programie obiekt, trzeba zdefiniować klasę, do której
należy obiekt.
Klasa jest to złożony typ będący opisem (definicją) pól i metod obiektów w
programie. Relacja między obiektem a klasą: Obiekt jest zmienną typu zdefiniowanego w klasie .[i]
takie "lekcje" widzę nagminni także w materiałach dla studentów (ciekawe kto od kogo zrzyna...), jeżeli chodzi o pisanie kodu powyższe jest prawdą, jeśli chodzi o analizę obiektową i projektowanie jest to klęska...
Tak programiści, przepraszam, macie rację programując tak jak programujecie: Wasz kod to w końcu to jakieś moduły z jakimiś danymi i jakimiś na nich operacjami, ale uwierzcie mi, że obiektowy model rzeczywistości to nie moduły, nie funkcje itp., to świat rzeczywisty, który: nie poddaje się normalizacji, uczeń niczego nie dziedziczy po nauczycielu, faktura nie jest asocjacją kontrahenta, produktów i ich wartości a po protu trwałym, spójnym bytem, świat składa się z redundancji.
Jak dostajecie wyniki obiektowej analizy "świata rzeczywistego" to nie zamieniajcie jej na kod z dziedziczeniem, normalizacją, asocjacjami itp. tylko przyjmijcie z pokorą model tego świata bo języki obiektowe powstały po to by Wam to ułatwić a nie nie po to by zmienić paradygmat.
Jak piszecie kod, którego celem jest szyfrowanie transmisji, renderowanie obrazków itp. to róbcie to jak najlepiej potraficie ale jak implementujecie model dziedziny to dajcie mu spokój, to nie Wasz problem, po protu skopiujcie go, a jak Wasz analityk nie potrafi Wam dać takiego modelu obiektowego to zmieńcie analityka...