Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki



Podobne dokumenty
Programowanie obiektowe - 1.

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Modelowanie i Programowanie Obiektowe

Podstawy Programowania Obiektowego

Język programowania. Andrzej Bobyk

Wykład 9: Polimorfizm i klasy wirtualne

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

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

Technologie i usługi internetowe cz. 2

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

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

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

Wykład 8: klasy cz. 4

Programowanie obiektowe

Podstawy Języka Java

Języki i paradygmaty programowania

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Wykład 9: Metody wirtualne i polimorfizm

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Podstawy programowania. Wprowadzenie

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Wykład 5: Klasy cz. 3

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

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

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Technologie obiektowe

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

hierarchie klas i wielodziedziczenie

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

Definiowanie własnych klas

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w C++ (PCP)

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie II C16

Programowanie obiektowe

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Enkapsulacja, dziedziczenie, polimorfizm

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

Semestr letni Brak Tak

Języki Programowania Obiektowego

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

Zaawansowane programowanie w C++ (PCP)

Podstawy programowania wykład

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

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

KARTA KURSU. Programowanie obiektowe

PRYWATNA WYŻSZA SZKOŁA BUSINESSU, ADMINISTRACJI I TECHNIK KOMPUTEROWYCH S Y L A B U S

WYKŁAD. Jednostka prowadząca: Wydział Techniczny. Kierunek studiów: Elektronika i telekomunikacja. Nazwa przedmiotu: Język programowania C++

dr inż. Jarosław Forenc

Programowanie obiektowe. Wprowadzenie

Materiały do zajęć VII

Programowanie obiektowe

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C6

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

Wzorce projektowe. dr inż. Marcin Pietroo

Metodyki i techniki programowania

Klasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np

Programowanie (C++) NI 5

Paradygmaty programowania

Wprowadzenie do programowanie obiektowego w języku C++

Podstawy programowania. Programowanie obiektowe

dr inż. Jarosław Forenc

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Programowanie Obiektowe

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

Metodyki i techniki programowania

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Do czego służą klasy?

Dziedziczenie jednobazowe, poliformizm

PRZEWODNIK PO PRZEDMIOCIE

TEMAT : KLASY DZIEDZICZENIE

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Rok akademicki: 2016/2017 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Multimedia JAVA. Historia

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Dziedziczenie. dr Jarosław Skaruz

Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

PARADYGMATY PROGRAMOWANIA Wykład 4

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Modelowanie diagramów klas w języku UML. Łukasz Gorzel @stud.umk.pl 7 marca 2014

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Dokumentacja do API Javy.

Spis treści. Wprowadzenie 15

Wstęp do programowania obiektowego. Wykład 2

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

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

Programowanie obiektowe

.NET Klasy, obiekty. ciąg dalszy

Projektowanie obiektowe. Roman Simiński Polimorfizm

Transkrypt:

Programowanie obiektowe W1 Wprowadzenie Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Ogólna charakterystyka języka C++ C++ jest obiektowym językiem programowania, łączy właściwości języków niskiego i wysokiego poziomu Został nadbudowany nad językiem C, opracowanym przez B. Kernighana i D. Ritchiego C++ zaprojektowany przez Bjærne Stroustrupa jako rozszerzenie języka ANSI C o obiektowe mechanizmy abstrakcji danych i silną statyczną kontrolę typów. Zachowanie zgodności z językiem C na poziomie kodu źródłowego pozostaje jednym z podstawowych założeń projektowych kolejnych standardów języka, ale nie zawsze jest ono spełnione.

Najpopularniejsze kompilatory (płatne) Microsoft Visual Studio to zintegrowane środowisko programistyczne firmy Microsoft. Jest używane do tworzenia oprogramowania konsolowego oraz z graficznym interfejsem użytkownika, Borland C++ Builder narzędzie programistyczne typu RAD firmy Borland do tworzenia aplikacji w języku C++. W Pracowni ZMAiO dostępne jest środowisko RAD Studio 2010 Embarcadero - jest potężnym pakietem programistycznych umożliwiającym wizualne tworzenie aplikacji z interfejsem GUI oraz aplikacji bazodanowych dla platformy Windows oraz.net. RAD Studio zawiera środowiska Delphi, C++Builder.

Nowe cechy języka C++ względem języka ANSI C Możliwość programowania obiektowego: Klasy, jako rozszerzenie struktury o funkcje składowe, enkapsulację, dziedziczenie i polimorfizm Obiekty, będące instancjami klas Metody wirtualne dostarczające polimorfizm Konstruktory i destruktory, Operatory new i delete Słowo kluczowe this (dostęp do obiektu, na rzecz którego wołana jest metoda) Wskaźniki do składowych klas (pól i metod)

Nowe cechy języka C++ względem języka ANSI C - c.d. Obsługa wyjątków: Deklaracja wychwytywania wyjątków: try... catch Deklaracja wywoływania wyjątku: throw Zmiany natury ogólnej: Przestrzenie nazw i operator zasięgu :: Referencje Przeciążanie funkcji Przeciążanie operatorów Szablony (wzorce) klas i funkcji

Literatura: 1. Jerzy Grebosz, Symfonia C++, Oficyna Kallimach, Kraków 1996, t.1-3. 2. Jerzy Grebosz, Pasja C++, Oficyna Kallimach, Kraków 1996, t.1-2. 3. Stephen Prata, Język C++. Szkoła programowania. Wydanie V, Helion 2011 4. Bjarne Stroustrup, Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion 2010 5. Andrzej Stasiewicz, C++. Ćwiczenia praktyczne. Wydanie III, Helion 2011 6. http://www.cplusplus.com/doc/tutorial/

Założenia paradygmatu obiektowego Programowanie obiektowe (ang. object-oriented programming) to: paradygmat programowania, w którym programy definiuje się za pomocą obiektów elementów łączących stan (czyli dane, nazywane najczęściej polami) i zachowanie (czyli metody które są procedurami/funkcjami operującymi na tych danych). Obiektowy program komputerowy wyrażony jest jako zbiór takich obiektów, komunikujących się pomiędzy sobą w celu wykonywania zadań. Podejście to różni się od tradycyjnego programowania proceduralnego, gdzie dane i procedury nie są ze sobą bezpośrednio związane. Programowanie obiektowe ma ułatwić pisanie, konserwację i wielokrotne użycie programów lub ich fragmentów.

Założenia paradygmatu obiektowego Obiekt (zmienna obiektowa) jest tzw. INSTANCJĄ klasy. Jest częścią programu i wykonuje ścisłe określone zadania. Programowanie oparte na klasach Klasa to typ obiektowy składający się z pól i metod. Definiowane są klasy, czyli typy zmiennych, a następnie tworzone są obiekty, czyli zmienne (w uproszczeniu) tych typów. Pole to zmienna która należy do klasy. Wartości pól należy modyfikować przez metody danej klasy. Metoda to procedura lub funkcja która należy do klasy i wykonuje operacje na wartościach pól.

Założenia paradygmatu obiektowego c.d. Powszechnie uważa się, że język programowania jest obiektowy jeżeli posiada następujące cechy: 1. Hermetyzacja/Enkapsulacja To cecha polegająca na ukrywaniu szczegółów implementacji. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko wewnętrzne metody obiektu są uprawnione do zmiany jego stanu. Definiując klasę stosuje się różne poziomy dostępu: public private protected

Założenia paradygmatu obiektowego c.d. 2. Polimorfizm /Wielopostaciowość Mechanizm zezwalający na nadawanie w hierarchii klas tych samych nazw metodom o podobnym zastosowaniu. Wywołanie metody spowoduje zachowanie odpowiednie dla 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.

3. Dziedziczenie Założenia paradygmatu obiektowego c.d. Dziedziczenie to mechanizm budowania klas na podstawie klas już zdefiniowanych. Klasa pochodna dziedziczy składowe od przodka klasy bazowej. Dziedziczenie porządkuje i wspomaga polimorfizm i enkapsulację dzięki możliwości definiowania i tworzenia specjalizowanych obiektów na podstawie klas bardziej ogólnych.

4. Abstrakcja Założenia paradygmatu obiektowego c.d. Abstrakcją w programowaniu nazywamy pewnego rodzaju uproszczenie rozpatrywanego problemu, polegające na ograniczeniu zakresu cech obiektów wyłącznie do cech kluczowych dla algorytmu. 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.

Podział Można wyróżnić dwa zasadnicze podtypy programowania obiektowego: 1. Programowanie oparte na klasach Definiowane są klasy, czyli typy zmiennych, a następnie tworzone są obiekty, czyli zmienne tych typów. 2. Programowanie oparte na prototypach W tym podejściu nie stosuje się pojęcia klasy. Nowe obiekty tworzy się w oparciu o istniejący już obiekt - prototyp, po którym dziedziczone są pola i metody i można go rozszerzać o nowe. Występuje raczej w językach interpretowanych.

Historia programowania obiektowego Obiektowy język programowania to taki, który umożliwia lub zachęca do stosowania obiektowych metod programowania. Pierwszy język obiektowy Simula 67 powstał już w latach sześćdziesiątych ubiegłego stulecia. Jego twórcami byli: Ole-Johan Dahl i Kristen Nygaard z Norsk Regnesentral w Oslo (prace nad symulacją statków). Simula była pierwszym językiem programowania, w którym wprowadzono pojęcie klasy i jej egzemplarza. Koncepcja została dopracowana w języku Smalltalk. Smalltalk jest czysto obiektowym językiem programowania z dynamicznym typowaniem. Umożliwia to w praktyce zupełnie inny sposób programowania od tego, do jakiego są przyzwyczajeni programiści używający języków obiektowych rozwiniętych z języków proceduralnych, takich jak C, czy Pascal.

Historia programowania obiektowego c.d. Programowanie obiektowe zyskało status techniki dominującej w połowie lat 80., głównie ze względu na wpływ C++, stanowiącego rozszerzenie języka C. Dominacja C++ została utrwalona przez wzrost popularności graficznych interfejsów użytkownika, do tworzenia których programowanie obiektowe nadaje się szczególnie dobrze. W tym okresie cechy obiektowe dodano do wielu języków programowania, w tym Ady, BASIC-a, Lispu, Pascala i innych.

Historia programowania obiektowego c.d. Dodanie obiektowości do języków, które pierwotnie nie były do niej przystosowane zrodziło szereg problemów z kompatybilnością i konserwacją kodu. Podejmowano liczne próby stworzenia nowych języków obiektowych. Eiffel stworzony przez Bertranda Meyera był wczesnym przykładem w miarę udanego języka spełniającego te założenia; Obiektowość rozprzestrzeniła się dość znacznie, jednak zwykle w systemach hybrydowych, w połączeniu z programowaniem funkcyjnym (Ocaml, niektóre dialekty Lispa), sieciowym (Java), skryptowym (Perl, Python, Ruby) itd. Języki czysto obiektowe typu Smalltalk nie znalazły zbyt szerokiego zastosowania.

Typy danych C/C++ Typy danych w języku C/C++ można podzielić na : typy proste typy strukturalne Typy proste są niepodzielne i wykorzystuje się je do tworzenia typów strukturalnych. Do typów prostych języka C++ zaliczamy arytmetyczne: całkowite i rzeczywiste; wyróżniamy wśród nich: typy fundamentalne typy pochodne (kombinacje typów fundamentalnych z zastosowaniem specyfikatorów) wskaźnikowe, referencyjne ( C++).

Typy danych C/C++ Do typów strukturalnych (złożonych) w C/ C++ zaliczamy tablice, struktury, unie, klasy ( C++)