background image

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

background image

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.

background image

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

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

4

Asembler - przykład

Fragment 
kodu do 
obliczania 
ciągu liczb 
Fibonacciego

background image

C: przykład

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

5

background image

LISP: przykład

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

6

background image

PROLOG: przykład

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

7

background image

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

background image

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

background image

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

background image

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)

background image

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 

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

background image

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, 

której 

każda 

reprezentuje  klasę  lub  obiekt  z  dziedziny 
problemu.

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

13

background image

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, 

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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 

background image

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); 

}

background image

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

background image

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

background image

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

background image

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

background image

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()

background image

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()

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

39

background image

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

background image

Java VM

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

41

background image

Java i inne języki

PWSZ, Elbląg, Instytut Informatyki Stosowanej 2004 r. Mgr. Inż. Aleksander Bielski

42