1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla...

29
Programowanie obiektowe Tomasz Koszlajda

Transcript of 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla...

Page 1: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Programowanie obiektowe

Tomasz Koszlajda

Page 2: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Literatura Historia języków obiektowych 1. Graham M. Birtwistle, O.J. Dahl, B. Myhrhaug, K. Nygaard

Simula BEGIN 1973. 2. Goldberg A.J., A.D.Robson Smalltalk-80: The Language and its

Implementation, Addison-Wesley 1983. 3. Brad Cox, Object oriented programming: an evolutionary ap-

proach, Addison-Wesley Longman Publishing Co., 1986. 4. Bjarne Stroustrup, Język C++; Wydanie V, WNT, Warszawa

2010. 5. Ken Arnold, James Gosling, David Holmes, The Java(TM) Pro-

gramming Language (3rd Edition), Addison Wesley Professional, 2000

6. Bertrand Mayer, Eiffel : The Language, Prentice Hall, 1991 Obiektowe metodyki w analizie, projektowaniu i progra-mowaniu 7. Ian Graham, Metody obiektowe w teorii i praktyce, WNT, rok

2004. 8. Bertrand Mayer, Programowanie zorientowane obiektowo,

Helion, tłumaczenie wydania II, rok 2005. 9. UML Przewodnik użytkownika, Booch, Rumbaugh, IJacobson,

WNT 2002 10. Peter Coad, Edward Yourdon, Analiza obiektowa, Read Me

1994. 11. Peter Coad, Edward Yourdon, Programowanie obiektowe,

Read Me 1994. 12. Andrei Alexandrescu , "Nowoczesne projektowanie w C++ za-

stosowania generyczności i wzorców projektowych", WNT 2005 13. Artykuły z konferencji OOPSLA Programowanie 14. Programista doskonały, Steve McConnell, LTP Oficyna Wy-

dawnicza 2003. 15. Wzorce projektowe, Erich Gamma, Richard Helm, WNT 2005 16. Wzorce projektowe: elementy oprogramowania obiektowego

wielokrotnego użytku, Erich Gamma, Helion 2010

Page 3: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Sukces modelu obiektowego Model obiektowy istotnie zmienił kształt wielu dyscyplin in-formatyki • Obiektowe języki programowania

Historia: lata 70/80/90; Simula, SmallTalk, C++, Delphi, Eiffel, Java, C#, PHP, Phyton, Ruby ≈95% rynku?

• Obiektowe metodyki analizy i projektowania opro-gramowania

Historia: lata 80/90/00; OOA/OOD, OODA, OMT, Objectory, BON, UML ≈ 85% rynku ?

• Obiektowe (obiektowo-relacyjne) bazy danych Historia: lata 80/90/00; GemStone, O2, Versant, ObjectStore, Objectivity, Illustra, db4o ≈ 75% ?

• Obiektowe platformy integracyjne Historia: lata 80/90/00/10; CORBA, DCOM, SOAP ≈ 70% ?

Page 4: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Przesłanki obiektowego modelu danych

1. Słabość inżynierii oprogramowania

Trudności w implementacji złożonych systemów in-formatycznych: • Niska jakość programów komputerowych • Trudność zrozumienia kodu • Pielęgnacja programów komputerowych • Mała produktywność programistów • Niska współużywalność modułów programowych • Krótki czas eksploatacji 

2. Niska siła wyrazu języków programowania

• Ograniczony zbiór prostych predefiniowanych typów danych 

• Rozwój przez budowę i wykorzystanie procedur 

Technologia programowania

Reprezentacja problemów

użytkowników

Page 5: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Architektura programów komputerowych

Dobra, a zła konstrukcja programów komputerowych • liczne i niejasne zależności z innymi modułami • odporność architektury na modyfikacje

Zależność między modyfikacjami funkcjonalnymi i implementacyjnymi

Moduł A

Moduł B spoistość

odwołania do zmiennych globalnych

powiązania międzymodułowe

funkcjonalność

implementacja

Δf

Δi

Δi Δf

≈1

Page 6: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Obiektowy paradygmat programowania

Poszukiwania paradygmatu programowania sprzyja-jącego budowaniu programów o dobrej architekturze • Proceduralny Świat jest modelowany jako algorytm Problemy są modelowane w procesie dekompozycji funkcjonalnej jako hierarchie algorytmów. Znaczenie danych jest drugorzędne. Programy są budowane jako zbiór procedur imple‐mentujących zdefiniowane algorytmy. Programowanie strukturalne – unikanie efektów ubocznych (jedno wejście, jedno wyjście, brak skoków i odwołań do zmiennych globalnych) 

• Obiektowy Świat jest modelowany jako zbiór obiektów Problemy są modelowane jako hierarchie specyfikacji klas obiektów (abstrakcyjnych typów danych). Znacze-nie algorytmów jest drugorzędne. Programy są budowane jako zbiór klas implementują-cych operacje abstrakcyjnych typów danych. Ukrywanie struktur danych wewnątrz modułów progra-mowych

Page 7: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Zależność między paradygmatem programowania, a architekturą

programów

Paradygmat proceduralny

• Modułami architektury programów są proce-dury

• Hierarchia funkcji • Model przepływu danych

Paradygmat obiektowy

• Modułami architektury programów są klasy obiektów

• Zbiór powiązanych, kooperujących obiektów • Model przepływu danych

…funkcja funkcja funkcje moduł

…funkcje

moduł dane

funkcje

dane

Page 8: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Zależność między paradygmatem programowania, a architekturą

programów

W konstrukcji złożonych systemów informa-

tycznych paradygmat obiektowy pozwala tworzyć systemy o lepszej jakości:

• Łatwość utrzymania • Odporność architektury na modyfikacje • Łatwość wielokrotnego użycia • Lepsze zrozumienie kodu 

Page 9: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

u

DobraOdzwie

Analiza

Zła arcNie od

SkładoApach

utrzy

a architerciedla

a skład

chitektdzwierci

owanie e Tomc

yman

tekturaa probl

dniowa X

tura iedla pr

informcat.

Łania i

a emy i p

XML w

roblemó

macji o

atworozu

pojęcia

w Apach

ów i po

zachow

ść umie

he Tom

ojęć

waniu

enia k

cat.

aplikac

kodu

cji w lo

u

ogach --

Page 10: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Architektura odzwierciedlająca dekompozycję funkcjonalną

Algorytm działania systemu operacyjnego DOS

Ładowanie systemu

Wyświetlenie znaku zachęty

Wykonanie po-lecenia

Analiza polecenia

Załadowanie programu

[wbudowane] [ niewbudowane ]

[niepoprawne]

[koniec pracy]

[niepoprawne]

[poprawne] [poprawne]

Edycja polecenia

Page 11: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Architektura odzwierciedlająca dekompozycję obiektową

Diagram klas systemu operacyjnego DOS

Plik # nazwa # rozmiar + otwórz() + zamknij() + czytaj()

Katalog# nazwa # rozmiar + czytaj() + dodajPlik()+ usuńPlik()

Program # nazwa # rozmiar + uruchom() + przydziel(Zasób)+ zwolnij(Zasób)

Moduł pamięci # rozmiar + przydziel(int) + zwolnij()

Zasób # id + czytaj() + przydziel() + zwolnij()

[0..1] [1..*]

jestPrzy-dzielonuDo

Page 12: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Zależność między paradygmatem programowania, a

architekturą programów

Teza: Dzięki temu języki obiektowe umożliwiły bu-dowanie bogatszych bibliotek: kolekcje da-nych, elementy graficzne, itp.

Paradygmat obiektowy ułatwia lepsze odwzorowanie problemów i pojęć użyt-kowników w architekturę programów komputerowych

Page 13: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Język programowania o rozszerzalnym

systemie typów danych

• Klasyczne języki programowania Zamknięty zbiór predefiniowanych typów danych i operatorów

• Obiektowe języki programowania Możliwość nieograniczonego rozszerzania typów danych i skojarzonych z nimi operacji

Symulacja lotu wahadłowca

int, float, char, …+, -, *, /, … [ ], struct

Reprezentowana  rzeczywistość 

Siła języka  programowania 

Symulacja lotu wahadłowca

class Zespolone {…}; class Wahadłowiec {…}; … Zespolone z1(2.39, 1.92); z3 = z2 + z1; Wahadłowiec Columbia();

Reprezentowana  rzeczywistość 

Siła języka  programowania 

Page 14: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Historia języków obiektowych Liderzy Simula 67 – Bazujący na Algol-u pierwszy język obiektowy wprowadzający koncepcje obiektów i klas. SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą maszyny wirtualnej Eifell (rok 1985) – Bazujący na języku Ada język obiektowy wprowadzający pojęcia asercji logicznych i klas generycznych. Java (1991, 1995) – Integrujący programowanie obiektowe z Internetem C# (rok 2000) – Środowisko uruchomieniowe, wydaj-ność interpretacji kodu Czyste języki obiektowe vs. języki hybrydowe

Page 15: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Historia języków obiektowych Simula

Simula I - (1964 - 1965) Simulation language - Wyspecjali-zowany język do symulacji procesów bazujący na Algolu 60

Simula 67 - (1967 - 1971) Simple universal language - uniwersalny język obiektowy

Class Rectangle (Width, Height); Real Width, Height; Begin Real Area, Perimeter; Procedure Update; Begin Area := Width * Height; Perimeter := 2*(Width + Height) End of Update; Boolean Procedure IsSquare; IsSquare := Width=Height; Update; ! Aktywacja obiektu; OutText("Rectangle created: "); OutFix(Width,2,6); OutFix(Height,2,6); OutImage; End of Rectangle;

Ref(Rectangle) R; (Class reference variable)

R := New Rectangle(50, 40);

Page 16: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

H

SmallTreflektyopraco| rectrectan

wibowibo

aPointcollis [

Histo

Talk 71ywny +owany wtanglengles ith: (Rottom: ith: (Rottom: t := Psions [:aRect

oria jS

1, 72, 7+ interakw Xeroxes aPoi:= OrdRectan200) Rectan210).

Point x:= rect | aR

językSma6, 80 –ktywne x Palo int | deredCongle le

ngle le x: 20 yctangleRect co

ków allTal– język środowAlto Re

ollecteft: 0

eft: 1

y: 20.es selontain

obielk-80obiektowisko, mesearch

tion right

0 righ

lect: nsPoint

ektow0 owy, niemaszynh Cente

t: 10 t

ht: 10

t: aPoi

wych

etypowna wirtuer

top: 1

top:

int]

h

any, ualna

100

110

Page 17: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Historia języków obiektowych - Eiffel Bazujący na języku Ada – język obiektowy wspierający me-todykę programowania przez kontrakt. Jako pierwszy wpro-wadził koncepcję klas generycznych. class STACK [G] … remove is

require -- warunki początkowe not_empty: not empty

do …

ensure -- warunki końcowe not_full: not full one_fewer_item: count = old count – 1

end end

Page 18: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Historia języków obiektowych - Java Składnia wzorowana na języku C++, architektura na środo-wisku SmaalTalk-80. Środowisko uruchomieniowe języka Java jest zintegrowane z Internetem – weryfikacja zdalnego kodu programów przed uruchomieniem. class MySecurityManager extends SecurityManager { public void checkRead (String file) {

if (file.endWith(".doc") ) throw new SecurityException ("Dostêp do

pliku " + file + "zabroniony"); }

}

zewnętrzny program źródłowy

program wynikowy

Security ManagerClass Loader

Verifier

Zasoby systemowePliki Porty Pamięć

Page 19: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Historia języków obiektowych – C#

Język o składni bazującej na języku C++. Nowe kon-cepcje własności obiektów: cechy, zdarzenia. Maszyna wirtualna JIT. class TimePeriod { private double seconds; public double Hours { get { return seconds / 3600; } set { seconds = value * 3600; } } } �class Button { // deklaracja zdarzenia public event ButtonEventHandler ButtonClick; // metoda wyzwalająca zdarzenie public void clicked(int count) { // wywołanie obsługi zdarzenia if (ButtonClick != null) ButtonClick (this,count); } } � �

Page 20: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

h

Pop

http://ww

Posi-tion Sep 2013

1

2

3

4 5

6 7

8 9

10 11

12 13

14 15

16 17

18 19

20

pular

ww.tiob

Posi-tion Sep 2012

1

2

4

3 6

5 7

8 11

14 15

9 10

12 16

13 19

24 20

25

rność

be.com

DeltaPosit

ć języ

/conten

a in tion

C

Ja

C

OP

C

(V

Py

Ja

Tr

V

Pe

R

DPa

Li

P

RM

C

yków

nt/pape

PrograLang

C

ava

C++

Objective-HP

C#

Visual) Ba

ython

avaScript

ransact-Sisual Bas

erl

Ruby

elphi/Objascal

isp

L/SQL

R

MATLAB

COBOL

w pro

erinfo/tp

ammingguage

C

asic

t

SQL

sic .NET

ject Pasc

ogram

pci/inde

Ra-

tingSep201316.97

% 16.15

% 8.664

8.5616.430

5.5644.837

3.1692.015

1.9971.844

1.6921.382

cal 0.8970.888

0.7700.676

0.6460.639

0.628

mowa

ex.html

-s

p 3

DeltSep201

75 -2.32

54 -0.11

4% -0.48

% -1.210% +0.82

4% -1.037% -0.69

9% -0.695% +0.69

7% +1.124% +1.00

2% -0.572% -0.34

7% -0.108% +0.06

0% -0.206% +0.07

6% +0.219% +0.08

8% +0.20

ania

ta p 2

Sta-tus

% A

% A

% A

% A 2% A

% A % A

% A 9% A

2% A 0% A

% A % A

% A- 6% A

% A 7% A-

% B 8% B

0% B

Page 21: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Pop

Oct 201

1 2 3 4 5 6 7 8 9 10

pular

13 PositOct 2

126345879

10

rność

tion 2012

Depos

2 6 3 4 5 8 7 9 0

ć języ

elta in sition

P

J P

P C C C O J

V R

yków

rogramlangua

ava PHP Python C#

C++ C Objectiveavascrip

Visual BaRuby

w pro

ming age

SO

e-C pt asic

ogram

hare in ct 2013 26.8 % 13.2 %9.8 % 9.5 %9.1 %8.4 % 8.1 %7.6 % 3.1 %2.6 %

mowa

Twelve

tren

ania

e monthnds -1.7 % -0.5 % +1.9 %+0.4 %-0.7 % -0.8 %+0.7 %+1.2 %-0.7 %

+0.2 %

h

%%%

%%%%%%

Page 22: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Rozszerzenia modelu obiektowego

• Współbieżność aktywnych obiektów – model Actor 

Integracja pojęcia obiektów i procesów. Program jest zbiorem aktywnych i kooperujących obiektów. • Trwałość obiektów – odwzorowanie O/RM 

Obiekty mogą przeżyć sesje programów powołujących je do życia i wyłącznie komputera. • Deklaratywna weryfikacja poprawności działania programów 

Rozszerzenie języka programowania o aksjomaty definiu-jące poprawne zachowanie kodu. • Programowanie aspektowe 

Architektura programu uwzględniająca przecinające się koncepcje

Page 23: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Podstawowe pojęcia modelu obiektowego

• obiekt Obiekt jest elementarną jednostką programową charakte-ryzująca się strukturą, stanem i zachowaniem. Obiekt integruje zbiór logicznie powiązanych danych ze zbiorem przetwarzających je operacji. Operacje związane z obiek-tem umożliwiają dostęp do jego stanu. Struktura obiektu jest zbiorem zmiennych zewnętrznych z punktu widzenia przetwarzających je operacji.

Struktura: String imię; String nazwisko; String etat; Float płaca; Int zespół; Operacje: void Zatrudnij(); void awansuj(String); …

Strukturalne własności obiektów są nazywane cechami. Wyróżnia się dwa rodzaje cech: atrybuty przechowujące stan obiektu i powiązania między obiektami. Operacje sko-jarzone z obiektem są implementowane przez metody bę-dące specyficznymi procedurami występującymi jedynie w kontekście danego obiektu. Metody określają zachowanie obiektu.

zatrudnij

awansujzwolnij

daj podwyżkę

przydziel do zespołu

przenieś

etat: prezes

imię: Jan nazwisko: Buła

płaca: 15 000 złzespół: 10

Page 24: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

• komunikat Komunikaty służą do uaktywniania procedur związanych z obiektem. Oprócz nazwy procedury komunikat może za-wierać parametry wejściowe wywołania metody. Po wy-konaniu procedury obiekt może zwrócić odpowiedź do miejsca wysłania komunikatu. Zbiór wszystkich komunika-tów rozumianych przez obiekt stanowi interfejs obiektu.

zatrudnij

aawwaannssuujjzwolnij

daj podwyżkę

przydziel do zespołu

przenieś

etat: referent

imię: Jannazwisko: Buła

płaca: 1500 zł zespół: 10

awansuj ("prezes")

Różnice między wywoływaniem procedur, a przesła-niem komunikatów Komunikaty są luźniej powiązane z właściwym kodem programu niż nazwy procedur. Obiekt posiada autonomię wyboru metody właściwej dla danego komunikatu. procedura: przesuń(kwadrat, wektor) przesuń(koło, wektor)

komunikat: kwadrat.przesuń(wektor) koło.przesuń(wektor)

Page 25: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

• klasa Klasa jest specyfikacją i implementacją definiowanego przez programistę abstrakcyjnego typu danych. Klas jest podstawowym modułem programu. Obiekty są wy-stąpieniami klas. Klasy definiują stałe cechy obiektów: strukturę danych (zbiór atrybutów i powiązań) oraz meto-dy.

zatrudnij

awansujzwolnij

daj podwyżkę

przydziel do zespołu

przenieś

etat: prezes

imię: Jan nazwisko: Buła

płaca: 15 000 zł zespół: 10

zatrudnij

awansujzwolnij

daj podwyżkę

przydziel do zespołu

przenieś

etat: prezes

imię: Jan nazwisko: Buła

płaca: 15 000 zł zespół: 10

zatrudnij

awansuj zwolnij

daj podwyżkę

przydziel do zespołu

przenieś

etat: prezes

imię: Jannazwisko: Buła

płaca: 15 000 zł zespół: 10

zatrudnij

awansujzwolnij

daj podwyżkę

przydziel do zespołu

przenieś

Etat etat;

char* imię; char* nazwisko;

float płaca; int zespół;

Klasa Pracownik

Obiekty – wystąpienia klasy Pracownik

etat: portier

imię: Jan nazwisko: Icek

płaca: 1000 zł zespół: 10

etat: kierowca

imię: Jan nazwisko: Dera

płaca: 1500 zł zespół: 10

etat: prezes

imię: Jan nazwisko: Buła

płaca: 15 000 zł zespół: 10

Struktura + metody

Stan

Page 26: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Podstawowe własności języków obiektowych

• Wsparcie dla definicji abstrakcyjnych typów danych możliwość definiowania przez użytkownika własnych ty-pów danych, które mogą być stosowane tak samo jak ty-py wbudowane

• Budowa programów jako zbioru klas klasy są podstawowymi (jedynymi) modułami programu

• Hermetyczność – ukrywanie informacji zwiększenie autonomii obiektów przez ukrycie ich imple-mentacji przed użytkownikiem obiektu

• Przesyłanie komunikatów przesyłanie komunikatów jest podstawowym mechani-zmem uaktywniania przetwarzania danych

• Dziedziczenie klasy mogą być tworzone poprzez ich dziedziczenie z in-nych klas

• Polimorfizm możliwość podstawiania pod zmienną określonego typu wystąpień różnych klas

• Dynamiczne wiązanie wyszukiwanie metod w obiekcie realizowane w trakcie działania programu

Page 27: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Zadanie domowe  Literatura uzupełniająca: • Rozdział nr 2 (strony 43 – 78): Zalety programowania obiektowego i metod obiektowych w Metody obiektowe w teorii i praktyce, Iana Grahama. 

• Część I rozdział 1: Jakość oprogramowania w Programowanie zorientowane obiektowo, Bertranda Meyera. 

   

Page 28: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Plan przedmiotu

1. Modelowanie klas - UML 2. Pojęcie i własności klas na przykładzie różnych języków

obiektowych • Moduły programowe • Abstrakcyjne typy danych • Obiekty złożone • Hermetyczność

3. Dziedziczenie • Współdzielenie kodu • Relacja podtypu • Polimorfizm, przesłanianie, późne wiązanie

4. Klasy generyczne 5. Obsługa wyjątków 6. Programowanie aspektowe 7. Semantyka ADT

• Specyfikacja semantyki ADT • Assercje w językach obiektowych

8. Ozwzorowanie obiektowo-relacyjne Powyższe zagadnienia będą ilustrowane przykładami w ję-zykach programowania: C++, Java, C#, Eiffel, SmallTalk, Aspect-J

Page 29: 1 - Wstęp · 2015-01-29 · SmallTalk 71, 72, 76, 80 – Interaktywne środowisko obiektowe dla wsparcia wydajności programistów. Czysty język obiektowy, implementowany za pomocą

Zasady zaliczenia • Kolokwium końcowe ‐ grudzień 2013 • Ocena z laboratorium • Aktywność (merytoryczna) na zajęciach