Języki i paradygmaty programowania



Podobne dokumenty
Podstawy programowania wykład

Wykład 8: klasy cz. 4

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

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

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

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

Wykład 5: Klasy cz. 3

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

Podstawy Programowania Obiektowego

Programowanie 2. Język C++. Wykład 3.

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

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

Wstęp do Programowania 2

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

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

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

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Programowanie obiektowe

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

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

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

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

Język programowania. Andrzej Bobyk

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

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

PARADYGMATY PROGRAMOWANIA Wykład 2

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

Wstęp do programowania obiektowego. Wykład 2

Wykład 9: Polimorfizm i klasy wirtualne

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

KARTA KURSU. Programowanie obiektowe

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

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

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

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Język C++ Różnice między C a C++

Programowanie obiektowe - 1.

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: KLASY I OBIEKTY, DANE I FUNKCJE SKŁADOWE, PRAWA DOSTĘPU, KONSTRUKTORY I DESTRUKTORY.

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

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

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

dr inż. Jarosław Forenc

Programowanie obiektowe

Język C++ Programowanie obiektowe

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Programowanie w Internecie. Java

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

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.

Programowanie obiektowe język C++

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

PARADYGMATY PROGRAMOWANIA Wykład 4

Do czego służą klasy?

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

KLASY cz.1. Dorota Pylak

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

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

Definiowanie własnych klas

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

Metodyki i techniki programowania

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Do czego służą klasy?

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Dziedziczenie. Ogólna postać dziedziczenia klas:

Materiały do zajęć VII

Podstawy Programowania Obiektowego

Programowanie Obiektowew języku C++ Zadania L4

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

Operator przypisania. Jest czym innym niż konstruktor kopiujący!

PROE wykład 1. dr inż. Jacek Naruniec

Wykład 9: Metody wirtualne i polimorfizm

Nowe słowa kluczowe. Komentarze. Wskaźniki typu void. class, delete, new, friend,... /* Komentarz w C i C++ */ // Komentarz w C++ (do końca wiersza)

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

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

Wykład 4: Klasy i Metody

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

Metodyki i techniki programowania

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie Obiektowe i C++

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

Rozdział 4 KLASY, OBIEKTY, METODY

Mechanizm dziedziczenia

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

dr inż. Jarosław Forenc

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Kurs WWW. Paweł Rajba.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Transkrypt:

Języki i paradygmaty programowania WYDZIAŁ ELEKTRONIKI i INFORMATYKI dr inż. Robert Arsoba Politechnika Koszalińska Wydział Elektroniki i Informatyki POLITECHNIKA KOSZALIŃSKA 2009/2010

Materiały do wykładu i ćwiczeń http://moskit.ie.tu.koszalin.pl/~bobby

Literatura Podstawy C i programowanie obiektowe w C++ 1. J. Grębosz: Symfonia C++. Programowanie w języku C++ orientowane obiektowo, Oficyna Kallimach, Kraków, 1999. 2. K. Barteczko: Praktyczne wprowadzenie do programowania obiektowego w języku C++, Wyd. Lupus, Warszawa 1993. 3. B. Stroustrup: Język C++, WNT, Warszawa, 2000. 4. S. Lippman: Podstawy języka C++, WNT, Warszawa, 1997. 5. S. Lippman, J. Lajoie: Podstawy języka C++, WNT, Warszawa 2001. 6. B. Eckel: Thinking in C++. Edycja polska, Wyd. Helion, Gliwice 2002.

Literatura Programowanie obiektowe w C++ 1. C. Delannoy: Ćwiczenia z języka C++. Programowanie obiektowe, WNT, Warszawa 1993. 2. E. Kain: Od C do C++, Wyd. Helion, Gliwice 1993. 3. P. Metzger: C++. Pierwsze kroki, Wyd. Helion, Gliwice 1994. 4. J. Grębosz: Pasja C++. Szablony, pojemniki i obsługa sytuacji wyjątkowych w języku C++, Oficyna Kallimach, Kraków, 1999.

Literatura Programowanie w środowisku Windows 1. I. Horton: Visual C++ 2005. Od podstaw, Wyd. Helion, Gliwice 2007 (ANSI C++, MFC, C++/CLI dla.net) 2. M. Owczarek: Aplikacje w Visual C++ 2005. Przykłady, Wyd. Helion, Gliwice 2007 (C++/CLI dla.net) 3. P. Besta: Visual Studio 2005. Programowanie z Windows API w C++, Wyd. Helion, Gliwice 2008 4. Ch. Petzold: Programowanie Windows, Oficyna Wydawnicza Read Me, Warszawa 1999 (dotyczy Windows API). 5. J. Hollingworth: C++ Builder 6. Vademecum profesjonalisty. Wyd. Helion, Gliwice 2003

Środowiska programistyczne IDE (Integrated Development Environment) Dev-C++ Eclipse licencje publiczne Visual Studio C++ (Microsoft) Express Edition C++ Builder (Embarcadero) RAD (Rapid Application Development) szybkie tworzenie aplikacji

Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie obiektów 2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne 3. Funkcje operatorowe. Wskaźnik this 4. Dziedziczenie 5. Polimorfizm i funkcje wirtualne 6. Szablony 7. Strumienie 8. Tworzenie aplikacji w systemie Windows

Wprowadzenie Język C a C++ Rozszerzenia nieobiektowe języka C++ Programowanie strukturalne a obiektowe Co to jest programowanie obiektowe?

Języki programowania Niskiego poziomu Wysokiego poziomu asembler Lisp Forth SPECJALIZOWANE SQL Prolog STRUKTURALNE Pascal C Modula Visual Basic SKRYPTOWE Perl OBIEKTOWE C++ Java C# Object Pascal Smalltalk Eiffel JavaScript PHP Ruby Python

Języki C i C++ Język C Rozszerzenia nieobiektowe Rozszerzenia obiektowe Język C++

Rozszerzenia nieobiektowe C++ Nowe mechanizmy WE/WY: strumienie cout, cin Nowy symbol komentarzy: // (komentarz wierszowy) Dowolne rozmieszczenie deklaracji Wyrażenia arytmetyczne w inicjalizacji: int a = 2*n-1; Przekazywanie argumentów do funkcji przez referencję void zwieksz(int &a) a++; } Argumenty domniemane funkcji void ustaw(int x, int y = 2, int z = 4) Przeciążanie funkcji Dynamiczne zarządzanie pamięcią: Funkcje otwarte inline new, delete

Programowanie strukturalne Program dzielony jest na fragmenty (podprogramy) nazywane procedurami lub funkcjami. Modularne Moduł to zestaw podprogramów. Programowanie obiektowe Dane i przetwarzające je funkcje tworzą całość (tzw. klasę). TYP DANYCH ZMIENNA KLASA OBIEKT Komponentowe Komponent to zestaw klas.

Programowanie obiektowe Programowanie obiektowe jest metodą projektowania i implementowania systemów informatycznych polegającą na modelowaniu obiektów rzeczywistych przy użyciu obiektów programowych. x, y Plik Edycja Widok Wstaw Format Pomoc h = 90 w = 120 class Okno private: int x, y, h, w; public: Okno(int szer, int wys) x = y = 0; h = wys; w = szer; } void Otworz()... } void Zamknij()... } void Przesun(int dx, int dy)... } };

Programowanie obiektowe (PO) PO nie daje żadnych nowych efektów w gotowym programie Zastosowanie PO nie jest widoczne dla użytkownika programu PO nie jest związane z żadnym językiem programowania

Cel programowania obiektowego Celem programowania obiektowego jest ograniczenie problemu złożoności programowania poprzez hermetyzację danych oraz wiązanie obiektów w hierarchiczne struktury. Programowanie obiektowe

Przykład wersja strukturalna #include <iostream> using namespace std; // definicja struktury typedef struct zespolone float re, im; // pola struktury } Zespolone; // dodawanie liczb zespolonych Zespolone dodaj (Zespolone a, Zespolone b) Zespolone c; c.re = a.re + b.re; c.im = a.im + b.im; return c; } void main() Zespolone a = 0, 1}, b = 1, 0}, c; c = dodaj(a, b); cout << "c = "<< c.re << " + j" << c.im << endl; }

Przykład wersja obiektowa #include <iostream> using namespace std; class Zespolone // definicja klasy Zespolone public: Zespolone() re = 0; im = 0; } Zespolone (float Re, float Im) re = Re; im = Im; } }; Zespolone dodaj (Zespolone z) return Zespolone(re+z.re, im+z.im); } void drukuj() cout << re << + j << im; } private: float re, im; // pola klasy void main() Zespolone a(0, 1), b(1, 0), c; c = a.dodaj(b); c.drukuj(); }

Klasy cz.1 Budowa klasy Klasa grupuje: dane (atrybuty, cechy opisujące obiekt) funkcje (czynności wykonywane przez obiekt, metody przetwarzania danych) Składowymi klasy mogą być zatem: zmienne (pola składowe klasy) funkcje (funkcje składowe klasy, metody)

Deklaracja klasy Klasa jest opisem (programowym modelem) rzeczywistego obiektu. Klasa definiuje obiektowy typ danych oraz związane z nim operacje. Deklarowanie klasy: class <nazwa_klasy> <deklaracje pól składowych klasy> <deklaracje funkcji składowych klasy> };

Prawa dostępu Klasa podzielona jest na sekcje oznaczone kwalifikatorami: public, private, protected Kwalifikatory służą do określania praw dostępu do składowych klasy. Składowe publiczne (public) są dostępne wewnątrz klasy i wszędzie poza klasą (również w innych klasach). Składowe prywatne (private) są dostępne tylko wewnątrz danej klasy na zewnątrz klasy są niedostępne. Składowe chronione / zabezpieczone (protected) są dostępne wewnątrz klasy i w klasach pochodnych. Jeżeli kwalifikator nie jest podany, domyślnie przyjmuje się prawa dostępu private.

Pola Pola składowe klasy (krótko: pola) to zmienne zadeklarowane wewnątrz klasy. Deklaracja pola ma postać deklaracji zmiennej. PRZYKŁADY: int wspx, wspy; float z; bool start; static int FONT_SIZE; char ulica[20]; Zespolone z; Punkt p;

Funkcje składowe (metody) Definicja funkcji składowej klasy: <typ> <nazwa klasy>::<nazwa_funkcji> (<argumenty>) <deklaracje> CIAŁO FUNKCJI (TREŚĆ) <instrukcje> }

Funkcje składowe (metody) class Punkt public: definicja w ciele klasy void Rysuj() /* rysowanie */ } }; class Punkt public: void Rysuj(); }; void Punkt::Rysuj() /* rysowanie */ } definicja poza ciałem klasy

Przykład deklaracji klasy kwalifikatory praw dostępu class Punkt private: int x, y; pola składowe funkcje składowe public: // konstruktor bezparametrowy Punkt() x = y = 0; } // konstruktor z parametrami Punkt(int a, int b) x = a; y = b; } }; void Rysuj() /* rysowanie */ }

Wywołanie funkcji składowej Funkcja składowa klasy może być aktywowana (wywołana) tylko na rzecz obiektu tej samej klasy. <nazwa obiektu>.<nazwa_funkcji> (<argumenty>) ; PRZYKŁAD: Punkt p; p.rysuj();

Konstruktor Konstruktor to specjalna funkcja składowa klasy, odpowiedzialna za tworzenie obiektu. Zadaniem konstruktora jest również wykonanie różnych czynności związanych z powstaniem obiektu, przewidzianych przez programistę (np. nadanie odpowiednich wartości polom składowym). Cechy konstruktora: każda klasa musi zawierać konstruktor (patrz: domyślny) nazwa identyczna z nazwą klasy uruchamiany automatycznie w momencie tworzenia obiektu nie można go aktywować na rzecz obiektu nie zwraca wyniku, nie ma typu wyniku argumentami nie mogą być obiekty tej samej klasy przekazane przez wartość (mogą być, ale przekazane przez referencję) możliwość przeciążania (w klasie może być kilka konstruktorów) powinien być funkcją publiczną (prywatny jest bezużyteczny)

PRZYKŁAD: class Punkt private: int x, y; Konstruktor public: Punkt() // konstruktor bezparametrowy x = y = 0; } Punkt(int a, int b) // konstruktor x = a; y = b; } // z 2 parametrami Punkt(int a); // konstruktor }; // z 1 parametrem Punkt::Punkt(int a) x = a; y = 0; }

Konstruktor Pola składowe klasy będące referencjami lub obiektami, albo poprzedzone słowem kluczowym const mogą być inicjalizowane tylko za pomocą listy inicjalizującej. class Kolo private: int promien; Punkt srodek; const float PI; obiekt stała }; public: Kolo(int r, Punkt p, float x); Kolo::Kolo(int r, Punkt p, float x) : srodek(p), PI(x) promien = r; }

Destruktor Destruktor to specjalna funkcja składowa klasy, odpowiedzialna za niszczenie obiektu. Zadaniem destruktora jest również wykonanie różnych czynności związanych z usuwaniem obiektu, przewidzianych przez programistę (np. zwolnienie obszarów pamięci przydzielanych dynamicznie). Cechy destruktora: każda klasa musi zawierać destruktor (patrz: domyślny) nazwa identyczna z nazwą klasy, poprzedzona znakiem ~ uruchamiany automatycznie w momencie niszczenia obiektu można go aktywować na rzecz obiektu podając pełną nazwę kwalifikowaną nie zwraca wyniku, nie ma typu wyniku brak argumentów brak możliwości przeciążania (w klasie może być tylko jeden destruktor)

Destruktor PRZYKŁAD: class Punkt private: int x, y; public: Punkt() // konstruktor bezparametrowy x = y = 0; } ~Punkt() // destruktor } }; Punkt::~Punkt() }

Tworzenie obiektów Klasa to obiektowy typ danych. Obiekt to zmienna typu obiektowego (egzemplarz klasy, instancja klasy). DEKLARACJA I STATYCZNE UTWORZENIE OBIEKTU: Punkt p1, p2(2, 3); DYNAMICZNE UTWORZENIE OBIEKTU: Punkt *p3, *p4; p3 = new Punkt(); p4 = new Punkt(2, 3); WYWOŁANIE FUNKCJI SKŁADOWEJ NA RZECZ OBIEKTU: p1.rysuj(); p3->rysuj(); (*p3).rysuj();