Programowanie obiektowo zorientowane. Mirosław Głowacki Wykład w języku C++

Podobne dokumenty
Programowanie w języku C++ Podstawowe paradygmaty programowania

Języki i paradygmaty programowania. I. Wprowadzenie

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Wstęp do informatyki Paradygmaty programowania

Paradygmaty Programowania dr inŝ. Cezary Bolek

InŜynieria oprogramowania. Język UML

Języki i paradygmaty programowania

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wykład 1 Informacje Podstawowe

Języki programowania deklaratywnego

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Paradygmaty programowania

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

Wykład 1 Informacje Podstawowe

Paradygmaty programowania

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

Programowanie obiektowe

Programowanie komputerów

Wykład 8: klasy cz. 4

Technologie cyfrowe semestr letni 2018/2019

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Podstawy programowania wykład

Języki i paradygmaty programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Technologie cyfrowe semestr letni 2018/2019

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Języki programowania imperatywnego

Wykład 5: Klasy cz. 3

Języki programowania deklaratywnego

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Język programowania PASCAL

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy Programowania Obiektowego

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Podstawy Informatyki Systemy sterowane przepływem argumentów

PARADYGMATY PROGRAMOWANIA

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Opisy efektów kształcenia dla modułu

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Paradygmaty i języki programowania. Wprowadzenie. dr Robert Kowalczyk, Katedra Analizy Nieliniowej, WMiI UŁ 1

dr inż. Jarosław Forenc

Języki programowania zasady ich tworzenia

GUI - projektowanie interfejsów cz. II

Programowanie Obiektowe i C++

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Wstęp do Informatyki dla bioinformatyków

Informatyka II stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Języki Programowania z Programowaniem Obiektowym wykład (15 godzin/semestr) laboratorium (30 godzin/semestr)

Programowanie obiektowe

Wstęp do programowania

Programowanie obiektowe

Teoretyczne podstawy informatyki

Programowanie funkcyjne wprowadzenie Specyfikacje formalne i programy funkcyjne

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

Programowanie w logice

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Języki i metodyka programowania

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Podstawy Programowania

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Programowanie. Pascal - język programowania wysokiego poziomu. Klasa 2 Lekcja 9 PASCAL

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Modelowanie i Programowanie Obiektowe

Wykład 9: Polimorfizm i klasy wirtualne

Podstawy programowania. Wprowadzenie

Wykład 9: Metody wirtualne i polimorfizm

Podstawy programowania komputerów

Jerzy Nawrocki, Wprowadzenie do informatyki

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Programowanie obiektowe - 1.

Język ludzki kod maszynowy

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Technologie i usługi internetowe cz. 2

Historia modeli programowania

Praktyka Programowania

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w języku Python. Grażyna Koba

Wykład 1 Informacje Podstawowe

Algorytm. Krótka historia algorytmów

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Wstęp do programowania. Różne różności

Metody Metody, parametry, zwracanie wartości

2.8. Algorytmy, schematy, programy

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014. Forma studiów: Stacjonarne Kod kierunku: 11.

Języki Programowania z Programowaniem Obiektowym laboratorium (30 godzin/semestr)

Transkrypt:

Programowanie obiektowo zorientowane Mirosław Głowacki Wykład w języku C++

Literatura B. Meyer, Programowanie zorientowane obiektowo, Helion Gliwice, 2005 J. Grębosz, Symfonia C++ Standard, Oficyna Kallimach, Kraków 2006 J. Grębosz, Pasja C++, Oficyna Kallimach, Kraków 2004 B. Stroustrup, Język C++, WNT 1995 D. Chapman, Visual C++ 6 dla każdego, Helion, Gliwice 1999 R. Sedgewick, Algorytmy w C++, Oficyna Wyd. RM, 1999

Paradygmaty programowania Mirosław Głowacki Wydz. Inżynierii Metali i Informatyki Przemysłowej AGH

Paradygmaty Powinniśmy zapewne zacząć od wyjaśnienia, o czym będzie mowa w niniejszym wykładzie. Istnieje pojęcie paradygmaty programowania i na początek warto przyjrzeć się znaczeniu słowa paradygmat, często nadużywanemu przez filozofów, lingwistów i informatyków Otóż, jak podaje Słownik języka polskiego PWN, paradygmat to: przyjęty sposób widzenia rzeczywistości w danej dziedzinie, doktrynie itp. lub zespół form fleksyjnych (deklinacyjnych lub koniugacyjnych), właściwy danemu typowi wyrazów; wzorzec, model deklinacyjny lub koniugacyjny.

Paradygmaty programowania Jak te definicje mają się do programowania? Trudno orzec; sięgnijmy jeszcze do greckich korzeni słowa. Greckie παράδειγμα oznacza wzorzec bądź przykład. Czyżby chodziło więc o typowy, wzorcowy sposób pisania programów? Niezupełnie chodzi raczej o zbiór mechanizmów, jakich programista używa, pisząc program, i o to, jak ów program jest następnie wykonywany przez komputer.

Paradygmaty programowania Zatem paradygmat programowania to ogół oczekiwań programisty wobec języka programowania i komputera, na którym będzie działał program. Przyjrzyjmy się czterem zasadniczym przykładom. Przykłady te, obejmujące najbardziej powszechne paradygmaty programowania.

Przykład pierwszy programowanie imperatywne Programowanie imperatywne to najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera Ściślej, obliczenia rozumiemy tu jako sekwencję poleceń zmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku. Stan maszyny należy z kolei rozumieć jako zawartość całej pamięci oraz rejestrów i znaczników procesora. Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna

Przykład pierwszy programowanie imperatywne Poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan. Języki wysokiego poziomu takie jak Fortran, Algol, Pascal, Ada lub C posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego. Przykładowo, instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci. Abstrakcją komórek pamięci są zmienne.

Przykład pierwszy programowanie imperatywne Przykładowy program w języku imperatywnym (Pascal) program silnia; var i, n, s: integer; begin read(n); s := 1; for i := 2 to n do s := s * i; write (s) end.

Przykład drugi programowanie funkcyjne Tutaj program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak stanu maszyny: nie ma zmiennych, a co za tym idzie nie ma żadnych efektów ubocznych. Nie ma też imperatywnych z natury, tradycyjnie rozumianych pętli (te wymagają np. zmiennych do sterowania ich przebiegiem). Konstruowanie programów to składanie funkcji, zazwyczaj z istotnym wykorzystaniem rekurencji. Charakterystyczne jest również definiowanie funkcji wyższego rzędu, czyli takich, dla których argumentami i których wynikami mogą być funkcje (a nie tylko proste dane jak liczby lub napisy).

Przykład drugi programowanie funkcyjne Przykładowy program (definicja funkcji) w języku funkcyjnym LISP (DEFINE (suma m n) (IF (> m n) 0 (+ m (suma (+ m 1) n)) ) )

Przykład drugi programowanie funkcyjne Obliczenie silni danej liczby: we współczesnym Common LISP (defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1)))))

Przykład trzeci programowanie w logice (programowanie logiczne) Na program składa się zbiór zależności (przesłanki) i pewne stwierdzenie (cel) Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki. Obliczenia wykonywane są niejako przy okazji dowodzenia celu. Podobnie jak w programowaniu funkcyjnym, nie wydajemy rozkazów, a jedynie opisujemy, co wiemy i co chcemy uzyskać.

Przykład trzeci programowanie w logice (programowanie logiczne) Przykładowy program w języku logicznym PROLOG ojciec(jan, jerzy). ojciec(jerzy, janusz). ojciec(jerzy, józef). dziadek(x, Z) :- ojciec(x, Y), ojciec(y, Z).?- dziadek(x, janusz). :- oznacza jeśli lub wtedy gdy?- oznacza czy stałe: rozpoczynają się z małej litery, a zmienne z dużej

Przykład czwarty programowanie obiektowe W programowaniu obiektowym program to zbiór porozumiewających się ze sobą obiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje Dane składowe klasy obiektów stanowią o stanie obiektów będących ich instancjami, a funkcje składowe klasy umożliwiają zmianę tego stanu Ważną cechą jest tu powiązanie danych (czyli stanu) z operacjami na nich (czyli poleceniami) w całość, stanowiącą odrębną jednostkę obiekt.

Przykład czwarty programowanie obiektowe Cechą nie mniej ważną jest mechanizm dziedziczenia, czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących. Zwolennicy programowania obiektowego uważają, że ten paradygmat dobrze odzwierciedla sposób, w jaki ludzie myślą o świecie Nawet jeśli pogląd ten uznamy za przejaw pewnej egzaltacji, to niewątpliwie programowanie obiektowe zdobyło ogromną popularność i wypada je uznać za paradygmat obecnie dominujący.

Przykład czwarty programowanie obiektowe Przykładowy fragment programu w języku obiektowym (C++) class macierz { static int nrmac; static int maxmac; int n, m; double* mac; public: macierz(int = 1, int = 1, double = 0); macierz operator+(macierz); ~macierz(); void piszmac(); int sizeofmac(){return n*m;}; };

Paradygmaty a języki programowania Konkretny język programowania ucieleśnia jeden lub więcej paradygmatów Fortran, Pascal i C to języki pozwalające stosować paradygmat programowania imperatywnego. Mówi się wręcz, że są to języki imperatywne. Java bądź C# to z kolei języki obiektowe, w których typowe programowanie imperatywne zostało mocno ograniczone. Natomiast C++ jest językiem zarówno obiektowym, jak i imperatywnym. Do pewnego stopnia można zresztą uznać, że programowanie imperatywne to szczególny, wynaturzony przypadek programowania obiektowego, gdzie wszystko rozgrywa się wewnątrz jednego superobiektu.