Obiekty, struktury, relacje, lalalalalalala

Dzisiaj miałem egzamin z inżynierii oprogramowania (UML do obiektówki i klasyczna analiza strukturalna jak za papy Yourdona). A ponieważ właściwie nie umiem ani jednego, ani drugiego, to nie zaliczyłem.

Próbując cośtam wymodzić w trakcie, dotarła do mnie jedna rzecz -- ja tak naprawdę nie rozumiem czym się różni model obiektowy, relacyjny i strukturalny (nie, nie chodzi mi o to, że nie wiem co to obiekt, albo jak zrobić kilka tabelek w bazie danych; chodzi mi o dogłębne zrozumienie fundamentalnych różnic w tych modelach i jak to się ma do projektowania przy ich pomocy). Też moja wina, bo mogłem to zauważyć wcześniej, gdybym się był bardziej do projektu przykładał, ale faktem jest, że nie było takiego mądrego dwa semestry wstecz, żeby nam to spróbował jakoś konkretnie wytłumaczyć.

Prawdę mówiąc ja nadal nie wiem jak powinienem się uczyć (w jaki konkretnie sposób, w jakiej kolejności, etc.) i mnie to drażni, ale spróbuję rzucić jak najlepszym przybliżeniem na to, co mi w tym momencie potrzeba.

1. Książka/tekst tłumaczące w jak najlepszy sposób te trzy (no, dwa, ale powiedzmy, że model strukturalny ze względu na tradycję) obecnie najważniejsze modele. Nie wiem jak to najlepiej zrobić, domyślam się, że poprzez krótką charakterystykę obu, która przechodzi w opis najbardziej reprezentacyjnych różnic w nich na konkretnych przykładach. Tzn. chcę zamodelować rzecz A i teraz gdzie są najważniejsze różnice dla tych trzech modeli oraz jak konkretnie moje malunki (uml, dfd, czy co tam) by się przekładały na fizyczny kod/zawartość bazy danych. To wszystko okraszone konkretnym opisaniem co, gdzie i w jaki sposób jest używane (tzn. strukturalny tu, patrzaj sql, modeluje się to tym, sialalalala).

2. Konkretne kursy użycia tych trzech modeli (kurs umla, kurs strukturalnej i zapewne kurs projektowania relacyjnych do kupy od razu z sql reference). Z konkretnymi odniesieniami do użycia i jak największym nastawieniem na hands-on, ale bez omijania co ważniejszych części teoretycznych. Jak byłem mały, to potrafiłem czytać (i czytałem) te knigi ala Knuth, które się zazwyczaj używa jako podręczniki na studiach, natomiast teraz mi wybitnie szkoda czasu, bo 99,9% treści tam zawartej i tak nie zapamiętam, a tylko stracę w cholerę czasu (kilka miesięcy temu próbowałem przeczytać analizę strukturalną Yourdona; bleee). Potrzebuję minimum konkretnie sprezentowanej wiedzy, która pozwoli mi jak najszybciej sobie w głowie stworzyć model... modelu. Żebym mógł modelować. A modelując będę sobie już sam łatał luki w wiedzy i dorabiał własne spostrzeżenia.

Najgorsze u mnie jest to, że ja myślę kodem. Mam problem z myśleniem o reprezentacji danych w formie strukturalnej, bo mam od razu w mózgu sprzeciw, że przecież nie jestem tego w stanie wstawić do mojego mysqla. Albo mam problem z modelowaniem relacji w umlu, bo ja tak naprawdę nie znam języków obiektowych (obiektowość pythona i c++ rozumiem tylko w stopniu podstawowym, czyli wiecie, obiekty, dziedziczenie i takie tam). Dlatego też bardzo ważne w tym wszystkim byłoby, żeby opisawszy jakiś związek w danym modelu, od razu było pokazane jak to wygląda zaimplementowane w jakimś konkretnym języku.

(Co do sqla, znaczy relacyjnych baz, to chyba wiem te najważniejsze rzeczy. Ale nie jestem tego pewien. I mnie to wybitnie drażni, bo o ile nie jest zbrodnią nie umieć czegoś zrobić, o tyle tragiczne jest nie wiedzieć nawet o istnieniu czegoś. Później kończy się takimi potworkami, jakie wyprodukowałem w pracy dwa lata temu, jak jeszcze nie umiałem nic poza prostym selectem. Mam jakąś niewielką książkę o bazach z WNT, będzie trza przejrzeć, mam nadzieję, że znajdę co trzeba przynajmniej z sqla.)

  1. 1. Patrys

    Pobaw się Django - tam dostaniesz po łapach, jak spróbujesz dotknąć bazy danych. Framework jest twoim DBA :)

    A co do obiektów - poczytaj o OO Design Patterns - są opisywane razem z przykładami konkretnego zastosowania.

  2. 2. Jajcuś

    A czy Django nie schowa relacji za obiektami? Jeśli tak, to w zrozumieniu relacyjnego modelu danych nie pomoże.

  3. 3. marcoos

    Heh, nie przejmuj się inżynierią u dra G., ja też jej w pierwszym terminie nie zaliczyłem. ;-)

    I takie pytanko na marginesie, czy tenże dr dalej na egzaminie wyświetla rzutnikiem pytania z Worda zmieniając je na bieżąco tak, że nigdy nie wiesz, o co naprawdę zapytał, czy może już odszedł od tej jedynej w swoim rodzaju metody? :))

  4. 4. mmazur

    Ewidentnie zaprzestał, natomiast wykłady prowadzi w sposób dosyć... specyficzny, zakładam, że to już u niego taka tradycja.

    Zaś co do samego umla, to se kupiłem o to -- http://helion.pl/ksiazki/umlakc.htm . Wygląda obiecująco, tzn. jeśli rzeczywiście robi, to co mówi, to będę znał te najprzydatniejsze kawałki umla i to zrobione na konkretnym przykładzie do przeanalizowania i popatrzenia na kawałki kodu. Jak mi będzie potrzeba, to po prostu resztę będę se doczytywał z internatu.

    Co do strukturalnej, to nie wygląda na to, żeby udało mi się jakąkolwiek sensowną pozycję znaleźć. To jest już chyba zabawka tylko dla kadry naukowej uniwersytetów.

  5. 5. marcoos

    U mnie było tak, że na pierwszy termin przeczytałem "UML w kropelce", a nawet zmusiłem się do przeczytania Yourdona (tylko w wersji "Just Enough Structured Analysis", http://www.yourdon.com/strucanalysis/ )

    To był błąd, bo założyłem, że pytania na egzaminie mają sens. A nie miały.

    Zaliczyli wtedy tylko ci, których bym o to nie podejrzewał - bo a) zakuli na pamięć te bezsensowne testy z poprzednich lat, lub b) zrobili sobie z nich ściągi.

    Na drugi termin więc ciepnąłem książki w kąt i również zakułem te testy na pamięć. I dobrze na tym wyszedłem, 3.5, a byłoby lepiej, gdybym bardziej pilnował tego jego dopisywania "nie" w różnych tuż przed tym, jak przeszedł do następnego pytania. :)

  6. 6. marcoos

    ...w różnych *miejsach*...

  7. 7. DeeJay1

    Co do obiektowości, to myślę że warto sięgnąć po "wzorce projektowe" (wydawnictwo WNT), może trochę hermetyczne ale daje jako takie pojęcie z czym to się je (+przykłady w c++), UMLa można ciut zaczerpnąć z manuala do ArgoUML, pogrzebać trochę w slajdach z innych uczelni etc. Prawdę mówiąc, rzeczy "hands on" jest niewiele...

  8. 8. mmazur

    Marcoos, testy to i ja wyryłem poprzednim w poprzednim semestrze. Bajer w tym, że teraz są pytania otwarte i trzeba normalnie cośtam zamodelować :)

  9. 9. Tomek

    Obiektowość najlepiej przyswajać poprzez wzorce projektowe - esencje tego paradygmatu:) Literatura tradycyjnie GoF i Fowler.

Adde commentarium: (textile lite)