Programowanie obiektowe: Różnice pomiędzy wersjami

Z Encyklopedia Zarządzania
m (cleanup bibliografii i rotten links)
m (cleanup bibliografii i rotten links)
 
(Nie pokazano 13 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
{{infobox4
|list1=
<ul>
<li>[[Język wysokiego poziomu]]</li>
<li>[[Program komputerowy]]</li>
<li>[[Wzorce projektowe]]</li>
<li>[[Algorytm przetwarzania]]</li>
<li>[[SQL]]</li>
<li>[[Baza NoSQL]]</li>
<li>[[Java]]</li>
<li>[[Data science]]</li>
<li>[[Programowanie strukturalne]]</li>
</ul>
}}
'''[[Programowanie]] obiektowe''' lub inaczej programowanie zorientowane obiektowo (ang. ''object-oriented programing'', ''OOP'') to [[paradygmat]] programowania przy pomocy obiektów posiadających swoje właściwości jak pola ([[dane]], [[informacje]] o obiekcie) oraz metody (zachowanie, działania jakie wykonuje obiekt). Programowanie obiektowe polega na definiowaniu obiektów oraz wywoływaniu ich metod, tak aby współdziałały wzajemnie ze sobą.
'''[[Programowanie]] obiektowe''' lub inaczej programowanie zorientowane obiektowo (ang. ''object-oriented programing'', ''OOP'') to [[paradygmat]] programowania przy pomocy obiektów posiadających swoje właściwości jak pola ([[dane]], [[informacje]] o obiekcie) oraz metody (zachowanie, działania jakie wykonuje obiekt). Programowanie obiektowe polega na definiowaniu obiektów oraz wywoływaniu ich metod, tak aby współdziałały wzajemnie ze sobą.


Linia 21: Linia 6:
==Pojęcia związane z programowaniem obiektowym==
==Pojęcia związane z programowaniem obiektowym==
Aby zrozumieć czym dokładnie zajmuje się programowanie obiektowe, na początek musimy poznać kilka podstawowych pojęć ściśle z nim związanych, takich jak:
Aby zrozumieć czym dokładnie zajmuje się programowanie obiektowe, na początek musimy poznać kilka podstawowych pojęć ściśle z nim związanych, takich jak:
*''' Obiekt ''' (inaczej "instancja") - programistyczny sposób zaprezentowania bytu (osoby lub rzeczy). Byt w rozumieniu programistycznym może być coś ze świata fizycznego lub bardziej abstrakcyjny koncept.
* ''' Obiekt ''' (inaczej "instancja") - programistyczny sposób zaprezentowania bytu (osoby lub rzeczy). Byt w rozumieniu programistycznym może być coś ze świata fizycznego lub bardziej abstrakcyjny koncept.
*''' Pole ''' - cecha danego obiektu. Zamiast pól mogą również wystąpić dane, atrybuty, zmienne egzemplarza lub właściwości.
* ''' Pole ''' - cecha danego obiektu. Zamiast pól mogą również wystąpić dane, atrybuty, zmienne egzemplarza lub właściwości.
*''' Metoda ''' - czynność danego obiektu w świecie rzeczywistym. Realna [[implementacja]] funkcji składowej, która jest zdefiniowana w modelu klasy
* ''' Metoda ''' - czynność danego obiektu w świecie rzeczywistym. Realna [[implementacja]] funkcji składowej, która jest zdefiniowana w modelu klasy


Teraz zobrazuję powyższe definicje prostym przykładem z życia. Powiedzmy, że '''obiektem''' jest kot, wtedy jego cechami (czyli '''polami''') może być jego kolor czy masa ciała, natomiast '''metodami''' są czynności, które wykonuje - miauczenie, picie mleka.
Teraz zobrazuję powyższe definicje prostym przykładem z życia. Powiedzmy, że '''obiektem''' jest kot, wtedy jego cechami (czyli '''polami''') może być jego kolor czy masa ciała, natomiast '''metodami''' są czynności, które wykonuje - miauczenie, picie mleka.
*''' Klasa ''' - przepis na obiekt. Klasa jest szablonem (wzorem), według którego możemy tworzyć różne obiekty. Definiuje nowy typ danych. W niektórych językach nie istnieje pojęcie klasy, np: w [[JavaScript]].
* ''' Klasa ''' - przepis na obiekt. Klasa jest szablonem (wzorem), według którego możemy tworzyć różne obiekty. Definiuje nowy typ danych. W niektórych językach nie istnieje pojęcie klasy, np: w [[JavaScript]].


Inne pojęcia:
Inne pojęcia:
*''' Klasa bazowa (nadklasa, klasa macierzysta) ''' - ogólna klasa wyższego poziomu.<ref NAME="DK" >Na podstawie: Dattatri K. (2009), ''C++: Effective Object-Oriented'', Wydawnictwo Helion, Gliwice, str. 30</ref>
* ''' Klasa bazowa (nadklasa, klasa macierzysta) ''' - ogólna klasa wyższego poziomu<ref NAME="DK" >Na podstawie: Dattatri K. (2009), ''C++: Effective Object-Oriented'', Wydawnictwo Helion, Gliwice, s. 30</ref>
*''' Klasa pochodna (podklasa, klasa potomna) ''' - klasa niższego poziomu. <ref name="DK"/>
* ''' Klasa pochodna (podklasa, klasa potomna) ''' - klasa niższego poziomu<ref name="DK"/>
*''' [[Agregacja]] (kompozycja) '''- jest to łączenie kilku obiektów (klas)w jeden obiekt (klasę).
* ''' [[Agregacja]] (kompozycja) ''' - jest to łączenie kilku obiektów (klas)w jeden obiekt (klasę).
*''' [[Prototyp]] ''' - tworzenie nowych obiektów, które są wzorowane na obiekcie macierzystym. Wykorzystywane w sytuacjach, kiedy należy utworzyć wiele podobnych obiektów tego samego typu.
* ''' [[Prototyp]] ''' - tworzenie nowych obiektów, które są wzorowane na obiekcie macierzystym. Wykorzystywane w sytuacjach, kiedy należy utworzyć wiele podobnych obiektów tego samego typu.
 
<google>n</google>


== Koncepcja ==
==Koncepcja==
Programowanie zorientowane obiektowo w swojej istocie zawiera wiele odmiennych technik wykorzystywanych przy tworzeniu aplikacji komputerowych. Istnieje wiele odmiennych zdań co do jednoznacznej charakterystyki programowania zorientowanego obiektowo nie każdy obiektowy język programowania implementuje w swoich założeniach każdą z metod, spośród których m.in. można wyróżnić<ref>Na podstawie: Grębosz J. (2008), ''Symfonia C++ standard'', Wyd. III, Wydawnictwo "EDITION 2000”, Kraków, str. 791, 865-866, 879</ref><ref>Na podstawie: Eckel B. (2006), ''Thinking in Java'', Wyd. IV, Wydawnictwo Helion, Gliwice, str. 38-39, 202-203, 375-376</ref><ref>Na podstawie: Martin R.C. (2010), ''Clean Code: A Handbook of Agile Software Craftsmanship'', Wyd. I,
Programowanie zorientowane obiektowo w swojej istocie zawiera wiele odmiennych technik wykorzystywanych przy tworzeniu aplikacji komputerowych. Istnieje wiele odmiennych zdań co do jednoznacznej charakterystyki programowania zorientowanego obiektowo - nie każdy obiektowy język programowania implementuje w swoich założeniach każdą z metod, spośród których m.in. można wyróżnić<ref>Na podstawie: Grębosz J. (2008), ''Symfonia C++ standard'', Wyd. III, Wydawnictwo "EDITION 2000", Kraków, s. 791, 865-866, 879</ref><ref>Na podstawie: Eckel B. (2006), ''Thinking in Java'', Wyd. IV, Wydawnictwo Helion, Gliwice, s. 38-39, 202-203, 375-376</ref><ref>Na podstawie: Martin R.C. (2010), ''Clean Code: A Handbook of Agile Software Craftsmanship'', Wyd. I, Wydawnictwo Helion, Gliwice, s. 54, 56-58, 134</ref>:
Wydawnictwo Helion, Gliwice, str. 54, 56-58, 134</ref>:


=== Abstrakcja ===
===Abstrakcja===
Pojęcie w programowaniu obiektowym najczyściej utożsamiane z klasą. Jest modelem, który w rzeczywistości nie reprezentuje żadnego istniejącego obiektu, a jedynie na podstawie którego definiowane są inne obiekty. Przykładem może być ssak, lub zwierzę nie ma ich rzeczywistego obiektu, a jedynie obiekty potomne bazujące na ich własnościach.
Pojęcie w programowaniu obiektowym najczyściej utożsamiane z klasą. Jest modelem, który w rzeczywistości nie reprezentuje żadnego istniejącego obiektu, a jedynie na podstawie którego definiowane są inne obiekty. Przykładem może być ssak, lub zwierzę - nie ma ich rzeczywistego obiektu, a jedynie obiekty potomne bazujące na ich własnościach.
<google>ban728t</google>


=== Dziedziczenie ===
===Dziedziczenie===
[[Technika]] programowania, która umożliwia wykorzystanie istniejącej już klasy do utworzenia nowej, bazującej na swojej poprzedniczce. Klasy dziedziczą z innych klas lub obiekty z obiektów (w JavaScript).
[[Technika]] programowania, która umożliwia wykorzystanie istniejącej już klasy do utworzenia nowej, bazującej na swojej poprzedniczce. Klasy dziedziczą z innych klas lub obiekty z obiektów (w JavaScript).


=== Polimorfizm ===
===Polimorfizm===
Inaczej wielopostaciowość, [[metoda]] pozwalająca funkcji wirtualnej przyjmować różne sposoby jej realizacji. Daje możliwość wywołania tej samej metody na różnych obiektach, przy czym mogą one (obiekty)odpowiadać w różny sposób w zależności od typu.
Inaczej wielopostaciowość, [[metoda]] pozwalająca funkcji wirtualnej przyjmować różne sposoby jej realizacji. Daje możliwość wywołania tej samej metody na różnych obiektach, przy czym mogą one (obiekty)odpowiadać w różny sposób w zależności od typu.


Przykładowo metoda jedź w rowerze będzie inaczej realizowana, niż metoda jedź w samochodzie, mimo tego, że nazywa się tak samo.
Przykładowo metoda jedź w rowerze będzie inaczej realizowana, niż metoda jedź w samochodzie, mimo tego, że nazywa się tak samo.
=== Programowanie uogólnione ===
 
===Programowanie uogólnione===
Paradygmat programowania znany również jako ''programowanie generyczne'' umożliwiający pisanie programów w danym języku bez wcześniejszej znajomości jego typów wbudowanych.
Paradygmat programowania znany również jako ''programowanie generyczne'' umożliwiający pisanie programów w danym języku bez wcześniejszej znajomości jego typów wbudowanych.


=== Hermetyzacja ===
===Hermetyzacja===
Pojęcie znane również pod nazwą ''enkapsulacja'' - porządkowanie metod oraz pól danej klasy z równoczesnym zatajeniem ich implementacji.
Pojęcie znane również pod nazwą ''enkapsulacja'' - porządkowanie metod oraz pól danej klasy z równoczesnym zatajeniem ich implementacji.


=== Obsługa wyjątków ===
===Obsługa wyjątków===
Technika podejścia do obsługi sytuacji wyjątkowych, których nie można zignorować i sposobu ich realizacji podczas działania programu komputerowego.
Technika podejścia do obsługi sytuacji wyjątkowych, których nie można zignorować i sposobu ich realizacji podczas działania programu komputerowego.


== Zalety i wady ==
==Zalety i wady==
Wśród zalet programowania zorientowanego obiektowo można wyróżnić<ref>Na podstawie: Martin R.C. (2010), ''Clean Code: A Handbook of Agile Software Craftsmanship'', Wyd. I, Wydawnictwo Helion, Gliwice, str. 69, 300, 101-104</ref>:
Wśród zalet programowania zorientowanego obiektowo można wyróżnić<ref>Na podstawie: Martin R.C. (2010), ''Clean Code: A Handbook of Agile Software Craftsmanship'', Wyd. I, Wydawnictwo Helion, Gliwice, s. 69, 300, 101-104</ref>:
* Wielokrotne wykorzystywanie raz napisanego kodu oraz co się z tym wiąże [[zasada]] DRY (ang. ''Don't Repeat Yourself''),
* Wielokrotne wykorzystywanie raz napisanego kodu oraz co się z tym wiąże [[zasada]] DRY (ang. ''Don't Repeat Yourself''),
* Bardziej spójna ideologia zarządzania kodem w stosunku do [[Programowanie strukturalne|programowania strukturalnego]],
* Bardziej spójna ideologia zarządzania kodem w stosunku do [[Programowanie strukturalne|programowania strukturalnego]],
Linia 67: Linia 53:
* Stabilność i [[elastyczność]]. Łatwość w dokonywaniu zmian oraz możliwość rozbudowywania o nowe funkcje (dzięki istnieniu dziedziczenia) bez konieczności wyrzucania całego systemu.
* Stabilność i [[elastyczność]]. Łatwość w dokonywaniu zmian oraz możliwość rozbudowywania o nowe funkcje (dzięki istnieniu dziedziczenia) bez konieczności wyrzucania całego systemu.


Wśród wad zaliczyć można<ref>Na podstawie: ''Meyer B. (2005), Programowanie zorientowane obiektowo'', Wyd. II, Wydawnictwo Helion, Gliwice, str. 52</ref>:
Wśród wad zaliczyć można<ref>Na podstawie: ''Meyer B. (2005), Programowanie zorientowane obiektowo'', Wyd. II, Wydawnictwo Helion, Gliwice, s. 52</ref>:
* Wolniejsza realizacja programu realizującego technikę zorientowaną obiektowo w stosunku do programowania strukturalnego,
* Wolniejsza realizacja programu realizującego technikę zorientowaną obiektowo w stosunku do programowania strukturalnego,
* Istnienie potencjalnych trudności w zmianie nawyków oraz tępa nauki z programowania strukturalnego na programowanie obiektowe,
* Istnienie potencjalnych trudności w zmianie nawyków oraz tępa nauki z programowania strukturalnego na programowanie obiektowe,
* Nie odpowiedni dla wszystkich rodzajów rozwiązanych problemów. Niektóre problemy (niewielkie skrypty, stosunkowo małe programy) skuteczniej, szybciej i wydajniej realizuje inżynieria budowy strukturalnej, niż metoda zorientowana obiektowo.
* Nie odpowiedni dla wszystkich rodzajów rozwiązanych problemów. Niektóre problemy (niewielkie skrypty, stosunkowo małe programy) skuteczniej, szybciej i wydajniej realizuje inżynieria budowy strukturalnej, niż metoda zorientowana obiektowo.


== Języki wykorzystujące OOP ==
==Języki wykorzystujące OOP==
Wybrane, bardziej popularne [[języki programowania]] wykorzystujące technikę zorientowaną obiektowo to między innymi<ref>Na podstawie: Meyer B. (2005), ''Programowanie zorientowane obiektowo'', Wyd. II, Wydawnictwo Helion, Gliwice, str. 1246-1275</ref>:
Wybrane, bardziej popularne [[języki programowania]] wykorzystujące technikę zorientowaną obiektowo to między innymi<ref>Na podstawie: Meyer B. (2005), ''Programowanie zorientowane obiektowo'', Wyd. II, Wydawnictwo Helion, Gliwice, s. 1246-1275</ref>:
* Ada
* Ada
* Beta
* Beta
Linia 91: Linia 77:
* Smalltalk
* Smalltalk
* [[Visual Basic]]
* [[Visual Basic]]
{{infobox5|list1={{i5link|a=[[Język wysokiego poziomu]]}} &mdash; {{i5link|a=[[Program komputerowy]]}} &mdash; {{i5link|a=[[Wzorce projektowe]]}} &mdash; {{i5link|a=[[Algorytm przetwarzania]]}} &mdash; {{i5link|a=[[SQL]]}} &mdash; {{i5link|a=[[Baza NoSQL]]}} &mdash; {{i5link|a=[[Java]]}} &mdash; {{i5link|a=[[Data science]]}} &mdash; {{i5link|a=[[Programowanie strukturalne]]}} }}


==Przypisy==
==Przypisy==
Linia 99: Linia 87:
* Daniluk A. (2011), ''Pracownia programowania obiektowego'', Uniwersytet Marii Curie-Skłodowskiej, Lublin
* Daniluk A. (2011), ''Pracownia programowania obiektowego'', Uniwersytet Marii Curie-Skłodowskiej, Lublin
* Dattatri K. (2009), ''C++: Effective Object-Oriented'', Wydawnictwo Helion, Gliwice
* Dattatri K. (2009), ''C++: Effective Object-Oriented'', Wydawnictwo Helion, Gliwice
* Eckel B. (2006), ''Thinking in Java'', Wyd. IV, Wydawnictwo Helion, Gliwice
* Eckel B. (2006), ''Thinking in Java'', Wydawnictwo Helion, Gliwice
* Grębosz J. (2008), ''Symfonia C++ standard'', Wyd. III, Wydawnictwo "EDITION 2000”, Kraków
* Grębosz J. (2008), ''Symfonia C++ standard'', Wydawnictwo EDITION, Kraków
* Martin R. (2010), ''Clean Code: A Handbook of Agile Software Craftsmanship'', Wyd. I, Wydawnictwo Helion, Gliwice
* Martin R. (2010), ''Clean Code: A Handbook of Agile Software Craftsmanship'', Wydawnictwo Helion, Gliwice
* Meyer B. (2005), ''Programowanie zorientowane obiektowo'', Wyd. II, Helion, Gliwice
* Meyer B. (2005), ''Programowanie zorientowane obiektowo'', Helion, Gliwice
* Stoyan S. (2010), ''Object-Oriented JavaScript'', Wydawnictwo Helion, Gliwice
* Stoyan S. (2010), ''Object-Oriented JavaScript'', Wydawnictwo Helion, Gliwice
* Walter B. (red.) (2008), ''[http://wazniak.mimuw.edu.pl/index.php?title=Zaawansowane_projektowanie_obiektowe Zaawansowane projektowanie obiektowe] '', Instytut Informatyki Politechniki Poznańskiej, Poznań
* Walter B. (red.) (2008), ''[https://wazniak.mimuw.edu.pl/index.php?title=Zaawansowane_projektowanie_obiektowe Zaawansowane projektowanie obiektowe]'', Instytut Informatyki Politechniki Poznańskiej, Poznań
* Welling L. (2005), ''Laura Thompson, PHP and MySQL Web Development'', Wyd. III, Wydawnictwo Helion, Gliwice
* Welling L. (2005), ''Laura Thompson, PHP and MySQL Web Development'', Helion, Gliwice
</noautolinks>
</noautolinks>


{{a|Maciej Sypień, Krystyna Jania}}
{{a|Maciej Sypień, Krystyna Jania}}
[[Kategoria:Protokoły komunikacyjne]]
[[Kategoria:Języki programowania]]


{{#metamaster:description|Programowanie obiektowe to paradygmat programowania, który umożliwia tworzenie i współdziałanie obiektów. Jest bardziej modularne i zrozumiałe.}}
{{#metamaster:description|Programowanie obiektowe to paradygmat programowania, który umożliwia tworzenie i współdziałanie obiektów. Jest bardziej modularne i zrozumiałe.}}

Aktualna wersja na dzień 19:14, 7 sty 2024

Programowanie obiektowe lub inaczej programowanie zorientowane obiektowo (ang. object-oriented programing, OOP) to paradygmat programowania przy pomocy obiektów posiadających swoje właściwości jak pola (dane, informacje o obiekcie) oraz metody (zachowanie, działania jakie wykonuje obiekt). Programowanie obiektowe polega na definiowaniu obiektów oraz wywoływaniu ich metod, tak aby współdziałały wzajemnie ze sobą.

TL;DR

Programowanie obiektowe to paradygmat programowania, w którym tworzy się obiekty posiadające pola i metody, które współdziałają ze sobą. W programowaniu obiektowym używa się pojęć takich jak obiekt, pole, metoda, klasa, dziedziczenie, polimorfizm, programowanie uogólnione, hermetyzacja i obsługa wyjątków. Programowanie obiektowe ma wiele zalet, takich jak wielokrotne wykorzystywanie kodu, lepsze zarządzanie kodem i łatwiejsze przyswajanie nowych projektów. Jednak ma także wady, takie jak wolniejsza realizacja w porównaniu do programowania strukturalnego. Przykładowe języki programowania, które wykorzystują programowanie obiektowe, to C++, Java, Python, Ruby i Visual Basic.

Pojęcia związane z programowaniem obiektowym

Aby zrozumieć czym dokładnie zajmuje się programowanie obiektowe, na początek musimy poznać kilka podstawowych pojęć ściśle z nim związanych, takich jak:

  • Obiekt (inaczej "instancja") - programistyczny sposób zaprezentowania bytu (osoby lub rzeczy). Byt w rozumieniu programistycznym może być coś ze świata fizycznego lub bardziej abstrakcyjny koncept.
  • Pole - cecha danego obiektu. Zamiast pól mogą również wystąpić dane, atrybuty, zmienne egzemplarza lub właściwości.
  • Metoda - czynność danego obiektu w świecie rzeczywistym. Realna implementacja funkcji składowej, która jest zdefiniowana w modelu klasy

Teraz zobrazuję powyższe definicje prostym przykładem z życia. Powiedzmy, że obiektem jest kot, wtedy jego cechami (czyli polami) może być jego kolor czy masa ciała, natomiast metodami są czynności, które wykonuje - miauczenie, picie mleka.

  • Klasa - przepis na obiekt. Klasa jest szablonem (wzorem), według którego możemy tworzyć różne obiekty. Definiuje nowy typ danych. W niektórych językach nie istnieje pojęcie klasy, np: w JavaScript.

Inne pojęcia:

  • Klasa bazowa (nadklasa, klasa macierzysta) - ogólna klasa wyższego poziomu[1]
  • Klasa pochodna (podklasa, klasa potomna) - klasa niższego poziomu[1]
  • Agregacja (kompozycja) - jest to łączenie kilku obiektów (klas)w jeden obiekt (klasę).
  • Prototyp - tworzenie nowych obiektów, które są wzorowane na obiekcie macierzystym. Wykorzystywane w sytuacjach, kiedy należy utworzyć wiele podobnych obiektów tego samego typu.

Koncepcja

Programowanie zorientowane obiektowo w swojej istocie zawiera wiele odmiennych technik wykorzystywanych przy tworzeniu aplikacji komputerowych. Istnieje wiele odmiennych zdań co do jednoznacznej charakterystyki programowania zorientowanego obiektowo - nie każdy obiektowy język programowania implementuje w swoich założeniach każdą z metod, spośród których m.in. można wyróżnić[2][3][4]:

Abstrakcja

Pojęcie w programowaniu obiektowym najczyściej utożsamiane z klasą. Jest modelem, który w rzeczywistości nie reprezentuje żadnego istniejącego obiektu, a jedynie na podstawie którego definiowane są inne obiekty. Przykładem może być ssak, lub zwierzę - nie ma ich rzeczywistego obiektu, a jedynie obiekty potomne bazujące na ich własnościach.

Dziedziczenie

Technika programowania, która umożliwia wykorzystanie istniejącej już klasy do utworzenia nowej, bazującej na swojej poprzedniczce. Klasy dziedziczą z innych klas lub obiekty z obiektów (w JavaScript).

Polimorfizm

Inaczej wielopostaciowość, metoda pozwalająca funkcji wirtualnej przyjmować różne sposoby jej realizacji. Daje możliwość wywołania tej samej metody na różnych obiektach, przy czym mogą one (obiekty)odpowiadać w różny sposób w zależności od typu.

Przykładowo metoda jedź w rowerze będzie inaczej realizowana, niż metoda jedź w samochodzie, mimo tego, że nazywa się tak samo.

Programowanie uogólnione

Paradygmat programowania znany również jako programowanie generyczne umożliwiający pisanie programów w danym języku bez wcześniejszej znajomości jego typów wbudowanych.

Hermetyzacja

Pojęcie znane również pod nazwą enkapsulacja - porządkowanie metod oraz pól danej klasy z równoczesnym zatajeniem ich implementacji.

Obsługa wyjątków

Technika podejścia do obsługi sytuacji wyjątkowych, których nie można zignorować i sposobu ich realizacji podczas działania programu komputerowego.

Zalety i wady

Wśród zalet programowania zorientowanego obiektowo można wyróżnić[5]:

  • Wielokrotne wykorzystywanie raz napisanego kodu oraz co się z tym wiąże zasada DRY (ang. Don't Repeat Yourself),
  • Bardziej spójna ideologia zarządzania kodem w stosunku do programowania strukturalnego,
  • Efektywniejsza praca przy dużym projekcie w zespole wykorzystującym technikę OOP,
  • Większa łatwość przyswojenia ideologii nowego projektu dla wdrażającego się programisty w stosunku do metodologii strukturalnej,
  • Niższy koszt rozwoju i późniejszej konserwacji aplikacji dzięki zastosowaniu OOP.
  • Stabilność i elastyczność. Łatwość w dokonywaniu zmian oraz możliwość rozbudowywania o nowe funkcje (dzięki istnieniu dziedziczenia) bez konieczności wyrzucania całego systemu.

Wśród wad zaliczyć można[6]:

  • Wolniejsza realizacja programu realizującego technikę zorientowaną obiektowo w stosunku do programowania strukturalnego,
  • Istnienie potencjalnych trudności w zmianie nawyków oraz tępa nauki z programowania strukturalnego na programowanie obiektowe,
  • Nie odpowiedni dla wszystkich rodzajów rozwiązanych problemów. Niektóre problemy (niewielkie skrypty, stosunkowo małe programy) skuteczniej, szybciej i wydajniej realizuje inżynieria budowy strukturalnej, niż metoda zorientowana obiektowo.

Języki wykorzystujące OOP

Wybrane, bardziej popularne języki programowania wykorzystujące technikę zorientowaną obiektowo to między innymi[7]:


Programowanie obiektoweartykuły polecane
Język wysokiego poziomuProgram komputerowyWzorce projektoweAlgorytm przetwarzaniaSQLBaza NoSQLJavaData scienceProgramowanie strukturalne

Przypisy

  1. 1,0 1,1 Na podstawie: Dattatri K. (2009), C++: Effective Object-Oriented, Wydawnictwo Helion, Gliwice, s. 30
  2. Na podstawie: Grębosz J. (2008), Symfonia C++ standard, Wyd. III, Wydawnictwo "EDITION 2000", Kraków, s. 791, 865-866, 879
  3. Na podstawie: Eckel B. (2006), Thinking in Java, Wyd. IV, Wydawnictwo Helion, Gliwice, s. 38-39, 202-203, 375-376
  4. Na podstawie: Martin R.C. (2010), Clean Code: A Handbook of Agile Software Craftsmanship, Wyd. I, Wydawnictwo Helion, Gliwice, s. 54, 56-58, 134
  5. Na podstawie: Martin R.C. (2010), Clean Code: A Handbook of Agile Software Craftsmanship, Wyd. I, Wydawnictwo Helion, Gliwice, s. 69, 300, 101-104
  6. Na podstawie: Meyer B. (2005), Programowanie zorientowane obiektowo, Wyd. II, Wydawnictwo Helion, Gliwice, s. 52
  7. Na podstawie: Meyer B. (2005), Programowanie zorientowane obiektowo, Wyd. II, Wydawnictwo Helion, Gliwice, s. 1246-1275

Bibliografia

  • Daniluk A. (2011), Pracownia programowania obiektowego, Uniwersytet Marii Curie-Skłodowskiej, Lublin
  • Dattatri K. (2009), C++: Effective Object-Oriented, Wydawnictwo Helion, Gliwice
  • Eckel B. (2006), Thinking in Java, Wydawnictwo Helion, Gliwice
  • Grębosz J. (2008), Symfonia C++ standard, Wydawnictwo EDITION, Kraków
  • Martin R. (2010), Clean Code: A Handbook of Agile Software Craftsmanship, Wydawnictwo Helion, Gliwice
  • Meyer B. (2005), Programowanie zorientowane obiektowo, Helion, Gliwice
  • Stoyan S. (2010), Object-Oriented JavaScript, Wydawnictwo Helion, Gliwice
  • Walter B. (red.) (2008), Zaawansowane projektowanie obiektowe, Instytut Informatyki Politechniki Poznańskiej, Poznań
  • Welling L. (2005), Laura Thompson, PHP and MySQL Web Development, Helion, Gliwice


Autor: Maciej Sypień, Krystyna Jania