Programowanie.
Wykład 1. Wprowadzenie.
Mgr.inż. Aleksander Bielski
alex@iis.pwsz.elblag.pl
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
1
Program wykładu
1) wprowadzenie do programowania
obiektowego:
Ewolucja metod programowania
Krótki przegląd wybranych
języków programowania
OOA-OOP-OOD
2) Charakterystyczne cechy
programowania obiektowego.
Klasy i obiekty
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
2
dziedziczenie
enkapsulacja (ukrywanie
implementacji)
kontrola dostępu
3) Java jako język programowania
obiektowego – przegląd
możliwości.
Ewolucja metod programowania
●
Język maszynowy
●
Kod asemblerowy
●
Języki ogólnego przeznaczenia: Fortran, PL/1, COBOL
●
Programowanie strukturalne
●
Języki do programowania dużych systemów: C
●
Języki do nauki programowania: Pascal, Algol
●
Języki do zastosowań specjalnych: GPSS, LISP, PROLOG,
ADA
●
Języki obiektowe: C++, SmallTalk, Java
●
Języki IV generacji i narzędzia RAD: Delphi, JavaBuilder,
C++ Bilder, Visual C itd.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
3
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
4
Asembler - przykład
Fragment
kodu do
obliczania
ciągu liczb
Fibonacciego
C: przykład
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
5
LISP: przykład
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
6
PROLOG: przykład
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
7
Złożoność oprogramowania
Złożoność problemów które potrafimy rozwiązać zależy
od poziomu i jakości abstrakcji dostarczonej przez
dany język.
abstrakcja wykonawcza
abstrakcja problemowa
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
8
Abstrakcja problemowa
Każdy język jest odpowiedni dla pewnej (wąskiej)
klasy problemów.
Rozwiązywanie problemów spoza danej klasy jest
nieefektywne lub niemożliwe.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
9
Abstrakcja problemowa: języki programowania
LISP
– problemy wyrażone listami
PROLOG
– problemy wyrażone przy pomocy reguł
logicznych
AWK
– przetwarzanie plików tekstowych
GPSS
– modelowanie procesów dyskretnych
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
10
OOA-OOP-OOD
Fazy w cyklu rozwojowym oprogramowania
obiektowego:
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
11
OOA
– Analiza obiektowa
(Object Oriented Analysis
OOD
– Projektowanie Obiektowe
(Object Oriented Design)
OOP
– P rogramowanie Obiektowe
(Object Oriented Programming)
OOA
-OOD-OOP c.d.
●
Analiza obiektowa (OOA)
– faza w cyklu
rozwojowym oprogramowania obiektowego, w
której w sposób formalny określa się
wymagania
i
strukturę
rozwiązywanego
problemu.
Cele OOA:
wyodrębnienie klas i obiektów
określenie związków między obiektami
przedstawienie zachowania obiektów
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
12
OOA-
OOD
-OOP c.d.
●
Projektowanie obiektowe (OOD)
- metoda
projektowania obejmująca proces dekompozycji
obiektowej
oraz
notacje
dla
opisania
logicznej i fizycznej struktury systemu oraz
statycznych i dynamicznych modeli systemu w
czasie projektowania.
Notacja obejmuje schematy klas, schematy
obiektów , schematy modułów i schematy
procesów.
Dekompozycja obiektowa – proces podziału
systemu
na
części,
z
której
każda
reprezentuje klasę lub obiekt z dziedziny
problemu.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
13
OOA-OOD-
OOP
c.d.
●
Programowanie obiektowe (OOP)
- jest to
metoda implementacji, w której programy są
organizowane jako współdziałające zespoły
obiektów,
z
których
każdy
jest
przedstawicielem pewnej klasy.
Cechy OOP: hierarchia klas, dziedziczenie,
polimorfizm.
●
Obiekt
– pojęcie lub obiekt materialny,
który może być wyodrębniony z otoczenia.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
14
Podejście Obiektowe
1.wszystko jest obiektem
2.program jest zbiorem obiektów które
wysyłają sobie komunikaty
3.każdy obiekt posiada pamięć na którą
składają się inne obiekty
4.każdy obiekt posiada swój typ
5.wszystkie obiekty tego samego typu mogą
otrzymywać te same komunikaty
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
15
Obiekty...
Obiekt ma stan, zachowanie i
tożsamość:
stan
- dane wewnętrzne
zachowanie
- zestaw metod
(funkcji) do wykonania
tożsamość
- każdy obiekt można
w sposób jednoznaczny odróżnić
od innych obiektów
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
16
Klasy i obiekty: definicje
Klasa
– definicja zbioru podobnych obiektów. Wszystkie
obiekty tej samej klasy mają jednakową strukturę i
zachowania.
Klasy mogą być:
abstrakcyjne – taka klasa jest wzorcem dla innych
podklas
grupowe (ang. container class) – obiekty takiej klasy są
kolekcjami innych obiektów.
podstawowe (ang. base class) – najbardziej ogólna
klasa w strukturze klas, często jest zdefiniowana jako
nadklasa (superklasa) dla wszystkich innych klas.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
17
OOA-OOD-
OOP
c.d.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
18
System biblioteczny.
Przykładowy diagram
klas i związków między
nimi wykonany przy
użyciu jednego z
narzędzi
CASE
.
Dziedziczenie
Dziedziczenie (ang. Inheritance)
– związek
pomiędzy klasami, w którym dana klasa przejmuje
strukturę albo zachowanie zdefiniowane w innej
klasie lub klasach.
Wyróżnia się dziedziczenie proste (jednokrotne) i
dziedziczenie wielokrotne.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
19
Enkapsulacja
Enkapsulacja (ang. Encapsulation)
– oznacza sposób
chowania wszystkich szczegółów obiektu, które nie wnoszą
wkładu do jego podstawowej charakterystyki. Zwykle ukryta
jest struktura obiektu i implementacja jego metod.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
20
Przykładowa klasa Book
Enkapsulacja i kontrola dostępu
Przykład w języku C++:
class Book
{
private:
char *title;
char *author;
char *isbn;
public:
char *getTitle();
char *getAuthor();
char *getISBN();
void setTitle(char*);
void setAuthor(char*);
void setISBN(char*);
}
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
21
Przykład w języku Java:
class Book {
private String title;
private String author;
private String isbn;
public String getTitle();
public String getAuthor();
public String getISBN();
public void setTitle(String);
public void setAuthor(String);
public void setISBN(String);
}
Java jako język programowania obiektowego
Definicja klasy: interfejs i implementacja.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
22
Interfejs ustala jakie żądania można wysyłać pod adresem
obiektu.
Nazwa typu
Interfejs
Implementacja obiektu w Javie
Utworzenie obiektu klasy:
Zarowka zr = new Zarowka();
Wysyłamy żądanie do obiektu:
zr.zapal();
Implementacja
- to kod umożliwiający wykonanie
żądań przez obiekt.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
23
Ukrywanie danych i kontrola dostępu w Javie
Zalety ukrywania implementacji:
●
ochrona danych i szczegółów implementacji przed
ingerencją z zewnątrz
●
możliwość zmiany implementacji klas bez wpływu na
poprawność działania aplikacji
●
ukrywanie nieistotnych szczegółów implementacji
Java obsługuje kilka poziomów kontroli dostępu:
●
public
- dostępne dla każdego
●
private
- tylko twórca klasy
●
protected
- dostęp mają tylko dana klasa i klasy
dziedziczące
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
24
Dziedziczenie: przykład
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
25
Figura
narysuj()
wymaz()
przesun()
zwrocKolor()
ustawKolor()
Okrag
Trojkat
Kwadrat
Z figury bazowej wywodzimy różne figury konkretne
Dziedziczenie: dodawanie nowych metod
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
26
Figura
narysuj()
wymaz()
przesun()
zwrocKolor()
ustawKolor()
Okrag
Trojkat
Kwadrat
odwrocPoziomo()
odwrocPionowo()
Dziedziczenie: przesłanianie metod
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
27
Figura
narysuj()
wymaz()
przesun()
zwrocKolor()
ustawKolor()
Okrag
Trojkat
Kwadrat
Rysuj()
wymaz()
Rysuj()
wymaz()
Rysuj()
wymaz()
Wymienialność obiektów
Obiekt jest reprezentantem typu bazowego
Kod jest niezależny od konkretnego typu
Tworzenie klas abstrakcyjnych
Problem kompilatora:
jaki kod ma zostać wykonany
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
28
Rozwiązanie: sposób wiązania
Polimorfizm
– pojęcie teorii typów wg którego sposób
wykonania danej operacji zależy od typu obiektu.
Wczesne wiązanie
– kompilator generuje wywołanie funkcji,
program łączący (linker) zamienia nazwę na konkretny
adres.
Późne wiązanie
– kompilator umieszcza zamiast wywołania
metody fragment kodu, który przeprowadza obliczenie
adresu metody dopiero w czasie działania programu.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
29
Polimorfizm - przykład
Metoda działająca na dowolnej figurze :
void zrobCos(Figura f) {
f.wymaz();
...
f.narysuj()
}
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
30
Polimorfizm – przykład c.d.
Tworzenie i użycie konkretnych figur:
Okrag o = new Okrag();
Trojkat t = new Trojkat();
Linia L = new Linia();
zrobCos(o);
zrobCos(t);
zrobCos(L);
Działa bez względu na typ obiektu.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
31
Abstrakcyjne klasy i metody
Klasa abstrakcyjna:
nie posiada obiektów
używana do tworzenia interfejsów klas pochodnych
Metody abstrakcyjne:
nie została zaimplementowana
można stworzyć jedynie wewnątrz klasy abstrakcyjnej
Dziedziczenie po klasie abstrakcyjnej:
metoda abstrakcyjna musi zostać zaimplementowana
klasa potomna jest abstrakcyjna (brak implementacji
metody)
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
32
Tworzenie obiektów
1.Metoda statyczna
Na stosie lub w obszarze statycznym.
Metoda szybka, programista musi sam zwolni
pamięć.
2.Metoda dynamiczna (Java)
Tworzenie dynamiczne obiektów na stercie.
Ilość i czas życia obiektów nieznany do czasu
wykonania.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
33
Czas życia obiektów
Metoda statyczna:
kompilator wyznacza czas trwania obiektu, i sam
go niszczy.
Metoda dynamiczna:
czas nieznany.
Java:
odśmiecacz pamięci, który wykrywa i usuwa
obiekty nieużywane.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
34
Odśmiecacz pamięci
Odśmiecacz pamięci:
wykrywanie które obiekty sa nieużywane
zwalnianie pamięci po tych obiektach
Upraszcza
problemy
projektowe,
zapobiega
przeciekom pamięci.
Cena:
nieprzewidywalność
czasu
wykonania
przez
działanie odśmiecacza.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
35
Wyjątki
Obsługa
błędów
wymuszona
przez
język
programowania:
wyjątek jest obiektem
sygnalizowany z miejsca błędu
przechwytywany przez odpowiednią procedurę
obsługi
Alternatywna ścieżka sterowania programu, w
przypadku wykrycia błędów.
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
36
Współbieżność
Wielowątkowość: kilka wykonań równoległych
wielowątkowość jest częścią języka
wątek jest obiektem
blokowanie obiektów współdzielonych
programowanie niezależne od faktycznej liczby
procesorów
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
37
Trwałość
obiekt istnieje tak długo jak go potrzebujemy, ale
nigdy dłużej niż wykonanie programu
obiekty trwałe są zapisywane, a następnie
odczytywane z dysku
obiekty trwałe przechowują wartość pomiędzy
wykonaniami programu
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
38
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
39
Platforma J2SE
Platforma Javy J2SE zawiera:
Środowisko
Java Runtime Environment (RE)
–
zawiera biblioteki, virtualną maszynę Javy oraz
inne komponenty niezbędne do uruchomienia
apletów i aplikacji.
Java 2
Software Development Kit (SDK)
– zawiera
wszystko co jest w J2RE plus narzędzia do
tworzenia apletów i oprogramowania (kompilatory,
debuggery)
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
40
Java VM
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
41
Java i inne języki
PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski
42