SlideShare a Scribd company logo
1 of 14
1
Programowanie obiektowe
Projekt z Informatyki i systemów informatycznych
Wyższa Szkoła Techniczno-Ekonomiczna
w Szczecinie
Edukacja Techniczno-Informatyczna semestr II
Autor:
Jacek Wściubiak
2
Wprowadzenie
Programowanie obiektowe (ang. object-
oriented programming) jest obecnie
najpopularniejszą techniką tworzenia
programów komputerowych.
Program komputerowy wyraża się jako
zbiór obiektów będących bytami łączącymi
stan (czyli dane) i zachowanie (czyli
metody, które są procedurami operującymi
na danych obiektu).
3
Programowanie strukturalne
i obiektowe
 W porównaniu z tradycyjnym
programowaniem strukturalnym, w
którym dane i procedury nie są ze
sobą powiązane, programowanie
obiektowe ułatwia tworzenie dużych
systemów, współpracę wielu
programistów i ponowne
wykorzystywanie istniejącego kodu.
4
Przykładowe języki
programowania obiektowego
 C++
 Java
 JavaScript
 Object Pascal
 Perl
 PHP
 Python
 VBScript
5
Podstawowe założenia
programowania obiektowego
 Abstrakcja
 Hermetyzacja
 Polimorfizm
 Dziedziczenie
6
Abstrakcja
 Każdy obiekt w systemie służy jako model
abstrakcyjnego "wykonawcy", który może
wykonywać pracę, opisywać i zmieniać swój
stan oraz komunikować się z innymi
obiektami w systemie bez ujawniania, w
jaki sposób zaimplementowano dane cechy.
Procesy, funkcje lub metody mogą być
również abstrahowane, a kiedy tak się
dzieje, konieczne są rozmaite techniki
rozszerzania abstrakcji.
7
Hermetyzacja
 Czyli ukrywanie implementacji,
enkapsulacja. Zapewnia, że obiekt nie
może zmieniać stanu wewnętrznego innych
obiektów w nieoczekiwany sposób. Tylko
własne metody obiektu są uprawnione do
zmiany jego stanu. Każdy typ obiektu
prezentuje innym obiektom swój interfejs,
który określa dopuszczalne metody
współpracy. Pewne języki osłabiają to
założenie, dopuszczając pewien poziom
bezpośredniego (kontrolowanego) dostępu
do "wnętrzności" obiektu. Ograniczają w
ten sposób poziom abstrakcji.
8
Polimorfizm
 Referencje i kolekcje obiektów mogą
dotyczyć obiektów różnego typu, a
wywołanie metody dla referencji spowoduje
zachowanie odpowiednie dla pełnego typu
obiektu wywoływanego. Jeśli dzieje się to w
czasie działania programu, to nazywa się to
późnym wiązaniem lub wiązaniem
dynamicznym. Niektóre języki udostępniają
bardziej statyczne (w trakcie kompilacji)
rozwiązania polimorfizmu – na przykład
szablony i przeciążanie operatorów w C++.
9
Dziedziczenie
 Porządkuje i wspomaga polimorfizm i
enkapsulację dzięki umożliwieniu
definiowania i tworzenia specjalizowanych
obiektów na podstawie bardziej ogólnych.
Dla obiektów specjalizowanych nie trzeba
redefiniować całej funkcjonalności, lecz
tylko tę, której nie ma obiekt ogólniejszy.
W typowym przypadku powstają grupy
obiektów zwane klasami, oraz grupy klas
zwane drzewami. Odzwierciedlają one
wspólne cechy obiektów.
10
Czym jest klasa?
 Klasa jest to zbiór zmiennych i metod,
które są ze sobą logicznie powiązane. Klasy
często przypominają czarne skrzynki, które
potrafią zrealizować określone zadania.
Zadania te można wykonywać zazwyczaj
tylko i wyłącznie poprzez wywoływanie
metod, które należą do obiektu. Klasa tylko
i wyłącznie określa jakie zmienne i metody
są w niej dostępne oraz określa ich
działanie. Można powiedzieć, że klasa jest
to własny typ danych o złożonej budowie i
tak należy rozumieć znaczenie tego słowa.
11
Czym jest obiekt?
 Jest to struktura zawierająca:
 dane
 metody, czyli funkcje służące do wykonywania
na tych danych określonych zadań
 Każdy obiekt ma trzy cechy:
 tożsamość, czyli cechę umożliwiającą jego
identyfikację i odróżnienie od innych obiektów;
 stan, czyli aktualny stan danych składowych;
 zachowanie (ang. behaviour), czyli zestaw
metod wykonujących operacje na tych danych.
12
Czym jest metoda?
 Metodami nazywamy funkcje, które
należą do obiektu. Tak więc zdanie:
'wywołaj metodę c_str() należącą do
klasy std::string', oznaczać będzie,
że trzeba posiadać najpierw obiekt
typu std::string, a następnie na
podanym obiekcie wywołać metodę o
podanej nazwie.
13
Konstruktory i destruktory
 Konstruktory i destruktory – są to specjalne metody
wywoływane podczas tworzenia obiektu oraz jego
usuwania.
 konstruktor nie może posiadać definicji zwracanego
typu
 konstruktor bez żadnych argumentów jest
konstruktorem domyślnym
 nazwa destruktora musi być poprzedzona znakiem
tyldy
 destruktor nie posiada definicji typu zwracanego oraz
nie przyjmuje żadnych argumentów
 nazwy konstruktora i destruktora muszą być zgodne z
nazwą klasy
 konstruktor i destruktor muszą być zadeklarowane w
części publicznej klasy
14
Przykład
 Obiekt: samochód
 Metody: dodaj gazu, hamuj, włącz światła, itp...
 Abstrakcja: tablica rozdzielcza wyświetla dane o
samochodzie nie
ujawniając szczegółów swojej budowy.
 Enkapsulacja: nawigacja w samochodzie odczytuje dane
z (obiektu) satelity nawigacyjnego nie zmieniając stanu
tego satelity.
 Polimorfizm: naciśnięcie pedału gazu powoduje reakcję
różnych obiektów powiązanych (pompy wtryskowej, silnika,
itp...)
 Dziedziczenie: Chcąc zdefiniować obiekt SAMOCHÓD
możemy skorzystać (odziedziczyć) cechy innych (wcześniej
zdefiniowanych) obiektów, jak: silnik, koło, żarówka itp.

More Related Content

Similar to Programowanie obiektowe

Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiDrupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiGrzegorz Bartman
 
8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnego8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnegokalaxq
 
[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariować[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariowaćJakub Marchwicki
 
W1 symulatory morskie_ metody symulacji systemów
W1 symulatory morskie_ metody symulacji systemówW1 symulatory morskie_ metody symulacji systemów
W1 symulatory morskie_ metody symulacji systemówkhann11
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Bartlomiej Zass
 
9. Programowanie w środowisku języka obiektowego
9. Programowanie w środowisku języka obiektowego9. Programowanie w środowisku języka obiektowego
9. Programowanie w środowisku języka obiektowegokalaxq
 
Design principles 4 hackers - tech3camp (28142014)
Design principles 4 hackers - tech3camp (28142014)Design principles 4 hackers - tech3camp (28142014)
Design principles 4 hackers - tech3camp (28142014)Jakub Marchwicki
 
Wprowadzenie do WPF cz. 2
Wprowadzenie do WPF cz. 2Wprowadzenie do WPF cz. 2
Wprowadzenie do WPF cz. 2mofyl
 
Tworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego koduTworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego kodupabloware
 

Similar to Programowanie obiektowe (10)

Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław SobieckiDrupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
Drupal Rules - Drupal Idzie Na Studia - Jarosław Sobiecki
 
Delegaty i kolekcje
Delegaty i kolekcjeDelegaty i kolekcje
Delegaty i kolekcje
 
8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnego8. Programowanie w środowisku języka strukturalnego
8. Programowanie w środowisku języka strukturalnego
 
[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariować[PL] Jak programować aby nie zwariować
[PL] Jak programować aby nie zwariować
 
W1 symulatory morskie_ metody symulacji systemów
W1 symulatory morskie_ metody symulacji systemówW1 symulatory morskie_ metody symulacji systemów
W1 symulatory morskie_ metody symulacji systemów
 
Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)Wzorce projektowe (w ASP.NET i nie tylko)
Wzorce projektowe (w ASP.NET i nie tylko)
 
9. Programowanie w środowisku języka obiektowego
9. Programowanie w środowisku języka obiektowego9. Programowanie w środowisku języka obiektowego
9. Programowanie w środowisku języka obiektowego
 
Design principles 4 hackers - tech3camp (28142014)
Design principles 4 hackers - tech3camp (28142014)Design principles 4 hackers - tech3camp (28142014)
Design principles 4 hackers - tech3camp (28142014)
 
Wprowadzenie do WPF cz. 2
Wprowadzenie do WPF cz. 2Wprowadzenie do WPF cz. 2
Wprowadzenie do WPF cz. 2
 
Tworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego koduTworzenie i utrzymywanie czystego kodu
Tworzenie i utrzymywanie czystego kodu
 

Programowanie obiektowe

  • 1. 1 Programowanie obiektowe Projekt z Informatyki i systemów informatycznych Wyższa Szkoła Techniczno-Ekonomiczna w Szczecinie Edukacja Techniczno-Informatyczna semestr II Autor: Jacek Wściubiak
  • 2. 2 Wprowadzenie Programowanie obiektowe (ang. object- oriented programming) jest obecnie najpopularniejszą techniką tworzenia programów komputerowych. Program komputerowy wyraża się jako zbiór obiektów będących bytami łączącymi stan (czyli dane) i zachowanie (czyli metody, które są procedurami operującymi na danych obiektu).
  • 3. 3 Programowanie strukturalne i obiektowe  W porównaniu z tradycyjnym programowaniem strukturalnym, w którym dane i procedury nie są ze sobą powiązane, programowanie obiektowe ułatwia tworzenie dużych systemów, współpracę wielu programistów i ponowne wykorzystywanie istniejącego kodu.
  • 4. 4 Przykładowe języki programowania obiektowego  C++  Java  JavaScript  Object Pascal  Perl  PHP  Python  VBScript
  • 5. 5 Podstawowe założenia programowania obiektowego  Abstrakcja  Hermetyzacja  Polimorfizm  Dziedziczenie
  • 6. 6 Abstrakcja  Każdy obiekt w systemie służy jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać i zmieniać swój stan oraz komunikować się z innymi obiektami w systemie bez ujawniania, w jaki sposób zaimplementowano dane cechy. Procesy, funkcje lub metody mogą być również abstrahowane, a kiedy tak się dzieje, konieczne są rozmaite techniki rozszerzania abstrakcji.
  • 7. 7 Hermetyzacja  Czyli ukrywanie implementacji, enkapsulacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko własne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój interfejs, który określa dopuszczalne metody współpracy. Pewne języki osłabiają to założenie, dopuszczając pewien poziom bezpośredniego (kontrolowanego) dostępu do "wnętrzności" obiektu. Ograniczają w ten sposób poziom abstrakcji.
  • 8. 8 Polimorfizm  Referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu, to nazywa się to późnym wiązaniem lub wiązaniem dynamicznym. Niektóre języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania polimorfizmu – na przykład szablony i przeciążanie operatorów w C++.
  • 9. 9 Dziedziczenie  Porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych. Dla obiektów specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W typowym przypadku powstają grupy obiektów zwane klasami, oraz grupy klas zwane drzewami. Odzwierciedlają one wspólne cechy obiektów.
  • 10. 10 Czym jest klasa?  Klasa jest to zbiór zmiennych i metod, które są ze sobą logicznie powiązane. Klasy często przypominają czarne skrzynki, które potrafią zrealizować określone zadania. Zadania te można wykonywać zazwyczaj tylko i wyłącznie poprzez wywoływanie metod, które należą do obiektu. Klasa tylko i wyłącznie określa jakie zmienne i metody są w niej dostępne oraz określa ich działanie. Można powiedzieć, że klasa jest to własny typ danych o złożonej budowie i tak należy rozumieć znaczenie tego słowa.
  • 11. 11 Czym jest obiekt?  Jest to struktura zawierająca:  dane  metody, czyli funkcje służące do wykonywania na tych danych określonych zadań  Każdy obiekt ma trzy cechy:  tożsamość, czyli cechę umożliwiającą jego identyfikację i odróżnienie od innych obiektów;  stan, czyli aktualny stan danych składowych;  zachowanie (ang. behaviour), czyli zestaw metod wykonujących operacje na tych danych.
  • 12. 12 Czym jest metoda?  Metodami nazywamy funkcje, które należą do obiektu. Tak więc zdanie: 'wywołaj metodę c_str() należącą do klasy std::string', oznaczać będzie, że trzeba posiadać najpierw obiekt typu std::string, a następnie na podanym obiekcie wywołać metodę o podanej nazwie.
  • 13. 13 Konstruktory i destruktory  Konstruktory i destruktory – są to specjalne metody wywoływane podczas tworzenia obiektu oraz jego usuwania.  konstruktor nie może posiadać definicji zwracanego typu  konstruktor bez żadnych argumentów jest konstruktorem domyślnym  nazwa destruktora musi być poprzedzona znakiem tyldy  destruktor nie posiada definicji typu zwracanego oraz nie przyjmuje żadnych argumentów  nazwy konstruktora i destruktora muszą być zgodne z nazwą klasy  konstruktor i destruktor muszą być zadeklarowane w części publicznej klasy
  • 14. 14 Przykład  Obiekt: samochód  Metody: dodaj gazu, hamuj, włącz światła, itp...  Abstrakcja: tablica rozdzielcza wyświetla dane o samochodzie nie ujawniając szczegółów swojej budowy.  Enkapsulacja: nawigacja w samochodzie odczytuje dane z (obiektu) satelity nawigacyjnego nie zmieniając stanu tego satelity.  Polimorfizm: naciśnięcie pedału gazu powoduje reakcję różnych obiektów powiązanych (pompy wtryskowej, silnika, itp...)  Dziedziczenie: Chcąc zdefiniować obiekt SAMOCHÓD możemy skorzystać (odziedziczyć) cechy innych (wcześniej zdefiniowanych) obiektów, jak: silnik, koło, żarówka itp.