Wprowadzenie do Programowania Obiektowego

Transkrypt

Wprowadzenie do Programowania Obiektowego
2016-03-04
Języki Programowania II
Wykład 1
Wprowadzenie do Programowania
Obiektowego
Wprowadzenie
• Organizacja przedmiotu
 7 wykładów
 4 listy ćwiczeniowe
• Zasady zaliczenia
 Projekt programistyczny
• Pytania
Plan wykładu
•
•
•
•
•
Programowanie Obiektowe
Klasy vs Obiekty
Powiazania
Atrybuty
Modelowanie klas w UML (Class diagram)
1
2016-03-04
Co zrobić żeby duży projekt się powiódł?
• Specjaliści, dobre standardy, doświadczenie
• Nie wystarczy wiedzieć jak zrobić wszystkie
część i jak je złożyć razem
– Czy da się je połączyć?
– Czy będą współpracować?
– Jak radzić sobie ze zmianami?
• Metoda…?
Programowanie obiektowe
• Najpopularniejsza technika tworzenia
programów
• Program = zbiór obiektów
• Obiekty łączą stan i zachowanie
• Obiekty zlecają sobie nawzajem pewne
odpowiedzialności
• Łatwiej tworzyć duże programy
Historia
• Pierwszy język obiektowy Simula 67
– Ole-Johan Dahl i Kristen Nygaard z Norsk Regnesentral w Oslo
– Symulacja świata rzeczywistego
• Alan Kay z Xerox's Palo Alto stworzył Smalltalk
– Wiele rewolucyjnych pomysłów, np. dziedziczenie
– Popularny i poniekąd stosowany w praktyce
• Lata dziewięćdziesiąte i C++
• Java
– Oak, Web Applety
2
2016-03-04
Czemu programowanie obiektowe
• Zmniejszenie luki reprezentacji
– Łatwiej współpracować nad czyimś kodem
• Zrób co należy i zrób to jak należy
• Analiza obiektowa – badanie problemu a nie
rozwiązania
– Klasy dziedzinowe a nie programowe
– Obiekty pojęciowe a nie programowe
• Projektowanie obiektowe
– Wyznaczanie odpowiedzialności obiektom
– Wzorce projektowe
Proces wytwórczy
• Podejście kaskadowe vs podejście iteracyjne
–
–
–
–
Opracowywanie nowego produktu
Nie zabieramy się za wszystko od razu
Krótkie iteracje
Zaczynamy od tego co najważniejsze, najtrudniejsze,
najbardziej ryzykowne
– Początkowe iteracje wyglądają inaczej niż końcowe
Obiektowe modelowanie dziedziny
• Klasy pojęciowe
– Klasy a obiekty
• Powiązania między klasami pojęciowymi
– Kierunek czytania
– Znaczące nazwy
• Atrybuty klas pojęciowych
– Atrybuty vs powiązania
• Inspiracja modelem dziedziny pozwala
zmniejszyć lukę reprezentacji
3
2016-03-04
Formułowanie klas pojęciowych
• Metoda kartografa:
– Używać istniejących nazw np. uczniowie vs studenci
– Nie pokazywać rzeczy nieistotnych (dla danej iteracji)
– Nie dodawać rzeczy których nie ma
• Analiza fraz rzeczownikowych
• Nie modeluj obiektów programowych
Modelowanie powiązań
• Za dużo powiązań = nieczytelne
• Tylko to co trzeba pamiętać o zależnościach między klasami
– Nie pokazujemy zasad
• Nazwy powinny przenosić informacje
• Liczebność
– 1 (dokładnie jeden)
– 11 (dokładnie jedenaście)
– 3, 5, 7 (trzy lub pięć lub siedem)
– 2..8 (od dwóch do ośmiu)
– 0..1 (zero lub jeden)
– 1..* (co najmniej jeden)
– * (dowolna ilość również zero)
Przykład
• W parach zaprojektuj aplikacje do gry w
Monopol 
1) Analiza obiektów/ aktorów w grze
Np. Gracz, pionek
2) Analiza powiązań pomiędzy obiektami
Np. Gracz posiada pionek
3) Liczebność powiazań
Np. Gracz posiada jeden pionek
4
2016-03-04
Model Gra w Monopol
Dodawanie atrybutów
• Wartości atrybuty opisują egzemplarze klas
pojęciowych
Np. nazwa, kolor, wzrost, itd.
• Pułapki
– Czy numer jest atrybutem klasy Bilet???
– Niech to będą typy podstawowe (uwaga na identyfikatory
itp.)
Gra w Monopol z atrybutami
5
2016-03-04
Obiekty (Egzemplarze)
Wiązania vs Powiązania
6