Programowanie obiektowe, wykład 1
1
Podstawowe poj cia
Podstawowe poj cia
programowania
programowania
obiektowego
obiektowego
Programowanie obiektowe, wykład 1
2
Obiektowo
Obiektowo
●
jest cech wynikaj c z naturalnego postrzegania
wiata. Człowiek analizuje otoczenie poprzez jego
relacj wzgl dem otaczaj cych go obiektów.
●
wiat nie jest obiektem jednorodnym. Składa si
on z wielu innych obiektów pozostaj cych w
pewnych relacjach wzgl dem siebie,
funkcjonuj cych w jego otoczeniu. Obiektami s
na przykład ludzie, pa stwa, nacje, domy, miasta,
zespoły miast. Przykładów takich mo na poda
jeszcze bardzo wiele (zarówno obiektów
widocznych „gołym okiem”, jak i obiektów,
których wyodr bnienie jest mniej oczywiste).
Programowanie obiektowe, wykład 1
3
Obiektowo
Obiektowo
,
,
cd
cd
.
.
●
obiektowo jest cech , która wynika ze sposobu
widzenia naszego otoczenia. Jest ona podstaw
jednej z metod analizy systemowej o nazwie
analiza obiektowa systemów.
●
w przypadku systemów informatycznych mówimy
o analizie obiektowej SI, projektowaniu
obiektowym SI i programowaniu obiektowym
(zorientowanym obiektowo).
?
czy potrafisz wskaza kilka obiektów wokół
Ciebie i poda relacje, w jakich s one powi zane
ze sob ?
Programowanie obiektowe, wykład 1
4
Obiektowa rzeczywisto
Obiektowa rzeczywisto
woda
w.słodka
w.słona
destylowana
rzeki
jeziora
oceany
ryby
delfiny
akumulatory
lekarstwa
mo e by
mo e by
mo e by
zasila
zasila
zasila
zasila
yj w nich
yj w nich
yj w nich
yj w nich
napełnia si
mo na u y
do produkcji
Rys.1. Przykłady ró nych zwi zków pomi dzy obiektami.
Programowanie obiektowe, wykład 1
5
Obiektowa rzeczywisto ,
Obiektowa rzeczywisto ,
cd
cd
.
.
●
Człowiek postrzega rzeczywisto stosuj c
klasyfikacj obiektów wzgl dem ró nych
poj abstrakcyjnych:
Poj cie 1
Poj cie 2
Poj cie 3
Poj cie n
postrzeganie
abstrakcyjne
ob
iek
ty
wi
ata
rz
ec
zy
wi
ste
go
...
Rys.2. Mechanizm obiektowego postrzegania rzeczywisto ci
Programowanie obiektowe, wykład 1
6
Podstawowe terminy
Podstawowe terminy
●
poj cie
jest wyobra eniem lub oznaczeniem, które
stosujemy dla obiektów w naszej wiadomo ci.
Poj cie b dziemy uto samia z
typem obiektowym
(klas obiektów)
,
●
obiekt
jest egzemplarzem poj cia,
●
dziedzina
jest wybranym obszarem zainteresowa ,
który zawiera kolekcj obiektów b d cych
egzemplarzami dziedziny,
●
specyfikacja dziedziny
jest kolekcj poj
odnosz cych si do wybranego obszaru
zainteresowa .
Programowanie obiektowe, wykład 1
7
wiczenie 1.1:
Na podstawie rysunku 3 wyszczególnij dziedziny,
poj cia i obiekty. Nazwij poszczególne zwi zki.
rodki
transportu
powietrzne
wodne
l dowe
urz dzenia
silnikowe
urz dzenia
zasilane siłami
natury
szybowce
odrzutowce
urz dzenia
tankowce
kajaki
samochody
rowery
Rys.3.
Programowanie obiektowe, wykład 1
8
Instensja
Instensja
i
i
ekstensja
ekstensja
klasy
klasy
obiektów
obiektów
●
instensja
typu obiektowego (klasy
obiektów, poj cia) jest definicj poj cia.
Jest to pewna koncepcja, idea stosuj ca si
do okre lonej grupy obiektów w naszej
wiadomo ci,
●
ekstensja
typu obiektowego (klasy
obiektów, poj cia) to zbiór obiektów danej
klasy (poj cia).
Programowanie obiektowe, wykład 1
9
Instensja
Instensja
i
i
ekstensja
ekstensja
klasy,
klasy,
cd
cd
.
.
Klasa
obiektów
Intensja
klasy
Ekstensja
klasy
symbolizuje
rodek
transportu
Co umo liwiaj cego
przemieszczanie si
ludzi i towarów
r. powietrzne,
r. l dowe,
r. wodne
Rys.4. Sposób rozumienia terminu: „klasa obiektów”
Programowanie obiektowe, wykład 1
10
wiczenie 1.2:
Na podstawie rysunków 1 i 3 wyszczególnij klasy
obiektów, ich intensje i ekstensje.
wiczenie 1.3:
Podaj przykłady klas obiektów dla nast puj cych
dziedzin poj ciowych:
• istoty nierozumne,
• istoty rozumne,
• zwierz ta nielataj ce,
• zwierz ta lataj ce.
wiczenie 1.4:
Stosuj c zapis z rysunku 3 przedstaw diagram
obiektów systematyzuj cy klas zwierz ta w taki
sposób, aby wskaza na ptaki lataj ce i nielataj ce
wraz z ich konkretnymi wyst pieniami.
Programowanie obiektowe, wykład 1
11
Klasa obiektów w j zyku
Klasa obiektów w j zyku
programowania
programowania
●
współczesne j zyki programowania, np.
Pascal, Modula2, C++ czy Java nazywamy
j zykami programowania zorientowanymi
obiektowo (OOP). Oznacza to, e do
rodowiska nieobiektowego wstawiono tzw.
obiektowe rozszerzenie (object extention) i
w ten sposób umo liwiono programowanie
zgodne z podej ciem obiektowym.
Programowanie obiektowe, wykład 1
12
Klasa obiektów w j zyku
Klasa obiektów w j zyku
programowania,
programowania,
cd
cd
.
.
●
w
j zykach zorientowanych obiektowo
nadrz dn jednostk programow jest
moduł, w którym umieszczana jest
implementacja typów i zmiennych
obiektowych.
●
w
j zykach obiektowych podstawow
jednostk syntaktyczn i semantyczn
programu jest klasa obiektów.
Programowanie obiektowe, wykład 1
13
Klasa obiektów w j zyku
Klasa obiektów w j zyku
programowania,
programowania,
cd
cd
.
.
●
klasa w j zyku programowania składa si
ze swoich zmiennych i metod.
●
zmienne obiektu umo liwiaj
przechowywanie zestawu warto ci
okre laj cych stan obiektu,
●
metody obiektu s jedynym interfejsem
obiektu z jego otoczeniem. Mówimy wtedy,
e
obiekty s hermetyczne
.
Programowanie obiektowe, wykład 1
14
Mechanizmy
Mechanizmy
obiektowo ci
obiektowo ci
●
Obiekt jako dana - wykorzystywane tak, jak zmienne w
j zykach programowania,
●
Obiekt jako abstrakcyjny typ danych - definiowanie nowych
typów obiektowych na bazie dost pnych w j zyku
programowania typów danych wraz z operacjami, które mog
by wykonywane na tych typach,
●
Ukrywanie informacji - informacja o wewn trznej budowie
obiektu nie jest dost pna poza jego definicj ,
●
Hermetyzacja - dost p do obiektu wył cznie za po rednictwem
jego metod,
●
Klasy generyczne - klasy nie posiadaj ce swoich egzemplarzy
(wyst pie ), wykorzystywana do definiowania innych klas (np.
templates w C++),
Programowanie obiektowe, wykład 1
15
●
Polimorfizm parametryczny - wielopostaciowo obiektów
indukowana u yciem ró nych typów obiektowych wstawianych w
miejsce parametrów formalnych
●
Polimorfizm inkluzyjny - u ycie obiektów pochodnych,
definiowanych na bazie obiektów zdefiniowanych wcze niej
(agregacje, dziedziczenia obiektów),
●
Metoda obiektu - operacja zwi zana semantycznie z obiektem,
stanowi ca jego interfejs do otoczenia obiektu,
●
Polimorfizm metod - wielopostaciowo metod obiektów (zwi zana
z dziedziczeniem obiektów wirtualizacja metod)
●
Wymiana informacji - przesyłanie komunikatów pomi dzy
obiektami lub powi zanie obiektu z funkcjonowaniem mechanizmu
obsługi zdarze w rodowisku obiektowym,
●
Kompromis - dwoista natura obiektu - typ-klasa, zmienna-
egzemplarz klasy.
Mechanizmy
Mechanizmy
obiektowo ci
obiektowo ci
,
,
cd
cd
.
.
Programowanie obiektowe, wykład 1
16
Implementacja klas w j zyku programowania
Implementacja klas w j zyku programowania
●
schemat definiowania klasy obiektów (Modula2):
CLASS Nazwa_klasy;
zmienna1:Typ1;
zmienna2: Typ2;
.......
zmiennaN:TypN;
PROCEDURE Metoda1(params1);
PROCEDURE Metoda2;
.......
PROCEDURE MetodaM(paramsM):TypM;
END Nazwa_klasy;
VAR obiekt1: Nazwa_klasy; - zmienna typu obiektowego
?
?
Jak j zyk programowania powinien zapewnia własno
Jak j zyk programowania powinien zapewnia własno
hermetyczno ci obiektów ?
hermetyczno ci obiektów ?
Programowanie obiektowe, wykład 1
17
●
schemat definiowania klasy obiektów (Pascal):
TYPE Nazwa_klasy=object
zmienna1:Typ1;
zmienna2: Typ2;
.......
zmiennaN:TypN;
Procedure Metoda1(params1);
Procedure Metoda2;
.......
Function MetodaM(paramsM):TypM;
Constructor Init;
Destructor Done;
END
;
Var obiekt1: Nazwa_klasy; - zmienna typu obiekt.
Implementacja klas w j zyku programowania,
Implementacja klas w j zyku programowania,
cd
cd
.
.
Programowanie obiektowe, wykład 1
18
●
schemat definiowania klasy obiektów (C++):
class Nazwa_klasy {
Typ1 zmienna1;
Typ2 zmienna2;
.......
TypN zmiennaN;
void Metoda1(params1);
void Metoda2(void);
.......
void TypM MetodaM(paramsM);
Nazwa_klasy(params) {tre konstruktora}
Nazwa_klasy(void) {tre destruktora}
};
Nazwa_klasy obiekt1; - zmienna typu obiektowego
Implementacja klas w j zyku programowania,
Implementacja klas w j zyku programowania,
cd
cd
.
.
Programowanie obiektowe, wykład 1
19
Zwi zki pomi dzy obiektami
Zwi zki pomi dzy obiektami
(odwzorowania)
(odwzorowania)
●
Poj cie zwi zku (powi zania, skojarzenia
obiektów) jest nieodł cznie zwi zane z
metodami analizy, projektowania i
programowania obiektowego. Naturaln na
przykład sytuacj jest to, e
do wyst pienia
jednej klasy obiektów mo na
przyporz dkowa
jedno b d wiele
wyst pie
innych klas obiektów.
Programowanie obiektowe, wykład 1
20
Zwi zki pomi dzy obiektami,
Zwi zki pomi dzy obiektami,
cd
cd
.
.
☛
spójrzmy zatem na przykład zwi zku pomi dzy
klasami obiektów: Grupa szkoleniowa i Student:
Rys.5. Przykład zwi zku typu: jeden do wielu
Grupa
szkoleniowa
Student
zwi zek
C11
C42
ZC15p
Janek
Ka ka
Kazik
Aga
Marta
Steve
Marek
egzemplarz
zwi zku
...
...
Programowanie obiektowe, wykład 1
21
Zwi zki pomi dzy obiektami,
Zwi zki pomi dzy obiektami,
cd
cd
.
.
●
poznali my zwi zki typu:
jeden do wielu
,
●
mamy tak e zwi zki typu:
jeden do
jednego
.
Przykładem takiego zwi zku pomi dzy
obiektami mo e by na przykład: m czyzna mo e
mie w danej chwili co najwy ej jedn jedn on
●
i jeszcze przykład zwi zku:
wiele do wielu
:
dział w firmie mo e składa si z wielu
pracowników, za pracownik mo e w ci gu
swojego ycia pracowa w wielu działach.
?
Czy potrafisz poda kilka innych przykładów zwi zków
pomi dzy klasami obiektów? Jakie to zwi zki?
Programowanie obiektowe, wykład 1
22
Notacja dla zapisu liczno ci
Notacja dla zapisu liczno ci
zwi zków pomi dzy obiektami
zwi zków pomi dzy obiektami
Czytaj c od
lewej do prawej
A jest zawsze
zwi zane z
jednym B
A jest zawsze
zwi zane z
jednym lub
wieloma B
A jest zawsze
zwi zane z
adnym lub
jednym B
A jest zawsze
zwi zane z
adnym, jed-
nym lub
wieloma B
Martin/Odell
Booch (w. 2.0)
Coad/Yourdon
Rumbaugh
(OMT)
Barker (CASE
Method)
A
B
A
B
A
B
A
B
A
B
1
A
B
1..N
A
B
0..1
A
B
N
A
B
1
A
B
1,m
A
B
0,1
A
B
0,m
A
B
A
B
A
B
1+
A
B
A
B
A
B
A
B
A
B
Tabela 1.1
Programowanie obiektowe, wykład 1
23
Zwi zki klas obiektów,
Zwi zki klas obiektów,
cd
cd
.
.
●
istniej specjalizowane systemy przetwarza-
nia danych realizuj ce mechanizmy utrzy-
mywania ró nego rodzaju zwi zków pomi -
dzy obiektami (encjami). Na naszym
wykładzie nie zajmiemy si takimi syste-
mami.
●
w j zykach programowania zorientowanych
obiektowo
zwi zki
klas
mo na zaimple-
mentowa
wykorzystuj c
dynamiczne
wi zania klas obiektów
, o czym b dzie
mowa w dalszym toku wykładu.
Programowanie obiektowe, wykład 1
24
Do przemy lenia...
Do przemy lenia...
czy potrafisz narysowa zwi zki (notacja
Martina) pomi dzy klasami obiektów z
rysunków 1 i 3 ?
czy klasa mo e wyst powa sama ze sob w
jakim zwi zku ? Przedstaw przykład
takiego zwi zku.
co w praktyce mo e powodowa
hermetyczno obiektów?
który z przedstawionych przykładów
j zyków programowania jest Twoim
zdaniem najbardziej czytelny?