Pracownia specjalistyczna. Materiały przygotowali: mgr inż. Wojciech Frohmberg, mgr inż. Michał Kierzynka
|
|
- Krystian Turek
- 6 lat temu
- Przeglądów:
Transkrypt
1 Pracownia specjalistyczna Materiały przygotowali: mgr inż. Wojciech Frohmberg, mgr inż. Michał Kierzynka
2 Obiektowość na przykładzie języka C++ Paradygmat funkcyjny Zorientowanie Na algorytmy Na dane Algorytm Funkcja Metoda Dostęp algorytmu do danych Typ danych Hermetyzacja Inicjalizacja wartości Skorzystanie z algorytmu Rozszerzanie algorytmu Pozostawianie otwartych fragmentów algorytmu Poprzez zmienne globalne lub parametry funkcji Struktura* lub w skrajnym przypadku zestaw zmiennych o typach prymitywnych (primitive data types) Brak gwarancji korzystania z typu danych wejściowych do algorytmu zgodnie z założeniem programisty Poprzez wartości domyślne Wywołanie funkcji Wywołanie funkcji wewnątrz nowej funkcji, choć nie zawsze daje zamierzony efekt Korzystanie ze wskaźników na funkcje Paradygmat obiektowy Preferowany dostęp poprzez własności (properties) obiektów Klasa Istnieją metody wymuszania poprawnego korzystania z typu Poprzez konstruktor Wywołanie metody, skorzystanie z przeciążonego operatora bądź użycie własności (property)** Korzystanie z mechanizmu dziedziczenia Korzystanie z mechanizmu abstrakcji... Tabela 1. Programowanie zorientowane funkcyjnie kontra programowanie obiektowe * W kompilatorach C++ struktury mają podobne możliwości jak klasy ** Przykładowo w C# skorzystanie z własności może powodować (i w ogólnym przypadku powoduje) wywołanie odpowiedniej metody get bądź set. Klasa vs struktura. Z punktu widzenia języka C++ jedyna różnica między strukturą a klasą tkwi tylko i wyłącznie w domyślnych specyfikatorach widoczności danych i dziedziczenia. Domyślnie elementy struktury są widziane przez świat zewnętrzny (mają specyfikator public: ) natomiast elementy klasy są widziane tylko przez nią samą (mają specyfikator private: ).
3 części opcjonalne części domyślne Składnia definicji struktury struct etykieta : [public/protected/private] etykieta_przodka { public: // pola i metody dostepne globalnie protected: // pola i metody dostepne tylko przez metody struktury oraz // struktur z niej dziedziczacych private: // pola i metody dostepne tylko przez metody struktury mozliwa_deklaracja_zmiennych; Składnia definicji klasy class etykieta : [specyfikator] etykieta_przodka { private: // pola i metody dostepne tylko przez metody klasy public: // pola i metody dostepne globalnie protected: // pola i metody dostepne tylko przez metody klasy oraz // klas z niej dziedziczacych mozliwa_deklaracja_zmiennych; Ograniczanie widoczności pól i metod przodka. public: protected: private: public public: protected: private: protected protected: protected: private: private private: private: private: Tabela 1. Widoczność pól i metod klasy nadrzędnej po zastosowaniu specyfikatora dziedziczenia Definicja pól. typ edykieta1, etykieta2, ; UWAGA! Standard ISO zabrania w definicji pola określać wartości domyślnej!
4 Definicja pól statycznych. static typ etykieta1, etykieta2, ; Powyższa uwaga dotyczy również pól statycznych. Do zdeklarowania wartości pola statycznego potrzebna jest deklaracja. Definicja metod. virtual typ etykieta(typ parametr1, typ parametr2, ) = 0; = 0 daje możliwość definiowania metod abstrakcyjnych. Nie może ono jednak wystąpić bez słowa kluczowego virtual. W drugą stronę to nie działa innymi słowy każda abstrakcyjna metoda jest również metodą wirtualną, ale nie każda metoda wirtualna jest metodą abstrakcyjną. Metody abstrakcyjne nie powinny posiadać zaimplementowanego ciała w typie, z którego się wywodzą. Późne wiązanie. Metody wirtualne będą mogły posiadać swoje odpowiedniki w klasach potomnych, które będą wywoływane w przypadku wywołania metody nawet gdy obiekt widziany jest jakby był swoją nadrzędną klasą. Własność tą nazywamy późnym wiązaniem. Przykład: #include <iostream> using namespace std; class A { public: virtual void foo() { cout << "A::foo()" << endl; ; class B : public A { virtual void foo() { cout << "B::foo()" << endl; ; int main() { A* a = new B(); a >foo(); // wypisze B::foo() Dla przykładu posłużyliśmy się definicją z jednoczesną deklaracją metod funkcji. W ogólności ten mechanizm jest niezalecany. Zaleca się oddzielenie definicji struktury/klasy i jej elementów od ich deklaracji. Definicje umieszcza się w plikach nagłówkowych, natomiast wszelkie deklaracje w plikach.cpp. Definicja metody statycznej. static typ etykieta(typ parametr1, typ parametr2, );
5 Elementy statyczne vs elementy niestatyczne. Różnica między elementami statycznymi i niestatycznymi danego typu mieści się w przynależności elementów do obiektów owego typu. Należy zwrócić uwagę, że obiektów typu może być dużo. Każdy z nich ma dostępną własną pamięć, a zatem zmiany wartości jego pól będą niewidoczne dla innych obiektów jego typu. W przypadku, gdy chcemy uwidocznić taką zmianę mamy do dyspozycji mechanizm pól statycznych. Pole statyczne ma przydzieloną pamięć do klasy a nie do obiektu. Pamięć tą przydzielamy przy deklaracji pola. Należy zwrócić uwagę, że pola statyczne należy dodatkowo zadeklarować, tym samym przydzielając pamięć na też pole. Deklaracja statycznych pól. typ etykieta_pn::etykieta_ks::etykieta_pola = wartosc_domyslna; gdzie etykieta_pn to etykieta przestrzeni nazw jeśli klasa w takowej się znajduje, a etykieta_ks to etykieta klasy bądź struktury. Deklaracja metod. typ etykieta_pn::etykieta_ks::etykieta_metody() { // Tutaj powinno znalezc sie cialo metody. // Mozliwe jest tu wykorzystanie zmiennej this, ktora // jest wskaznikiem na obiekt, na ktorym metoda zostala // wywolana. Przykladowo: this >pole_calkowitoliczbowe = 2; Deklaracja metod statycznych. typ etykieta_pn::etykieta_ks::etykieta_metody() { // Tutaj powinno znalezc sie cialo metody. // W przypadku metod statycznych nie mozna stosowac // zmiennej this, gdyz metoda nie musi byc wywolywana na // konkretnej instancji klasy (obiekcie). Możliwe wywołania metod. Zarówno metody statyczne jak i niestatyczne możemy wywoływać w podobny sposób: etykieta_instancji.etykieta_metody(parametr, parametr, ); lub też: etykieta_wskaznika >etykieta_metody(parametr, parametr, ); Należy jednak zwrócić uwagę, że istnieje alternatywny sposób wywołania metod statycznych: etykieta_pn::etykieta_ks::etykieta_metody(parametr, parametr, ); Jest to o ważne z punktu widzenia implementowania metod statycznych. Metod tych możemy używać wtedy i tylko wtedy, gdy nie chcemy dostawać się do pól
6 instancji obiektów. Należy jeszcze zwrócić uwagę że nie istnieje w większości języków programowania coś takiego jak wirtualne metody statyczne. Dlatego zastosowanie metod statycznych z punktu widzenia stricte obiektowego programowania jest bardzo wąskie i ogranicza się do paru przypadków. Np. gdy chcemy skorzystać z tzw. wzorca projektowego Singleton. Deklaracje vs definicje. Jak już wcześniej wspomniano dobrym zwyczajem jest oddzielenie definicje elementów struktury/klasy od ich deklaracji. Przykład zgodnego z tym zwyczajem oddzielenia nagłówków od deklaracji: Plik car.h : #ifndef _CAR_H_ #define _CAR_H_ 1 #include <string> #include "vehicle.h" using namespace std; class Car : public Vehicle { protected: string doorsstate; public: virtual void opendoors(); ; #endif /*_CAR_H_*/ Plik car.cpp : #include "car.h" void Car::openDoors() { this >doorsstate = "opened"; Należy zwrócić uwagę że plik car.cpp nie ma zdeklarowanej funkcji main. Takiego pliku nie możemy skompilować do pliku wykonywalnego a jedynie do biblioteki, którą następnie należy trzeba będzie dodać na etapie linkowania do pliku, który to posiada funkcję main i korzysta z biblioteki. Kompilowanie biblioteki. g++ c nazwa_pliku.cpp o nazwa_pliku_biblioteki.o W przypadku, gdy nie podamy nazwy pliku biblioteki domyślnie biblioteka dostanie nazwę pliku.cpp ale z rozszerzeniem.o.
7 ZADANIA Zad. 1. Utwórz plik main.cpp i dodaj w nim definicję struktury Car z polami: driver, passenger1, passenger2, passenger3 wszystkie typu string. Z poziomu funkcji main wczytaj wartości do utworzonej instancji obiektu struktury Car (skorzystaj z funkcji getline). Zad. 2. Stwórz tablicę 10 instancji obiektu typu Car. Również do nich wczytaj w/w pola. Jak najłatwiej poradzić z problemem wielokrotnego wczytywania zmiennych dla poszczególnych instancji? Znajdź i zaimplementuj najprostsze rozwiązanie. Zad. 3. Zmień typ Car tak żeby był strukturą. Jakie za sobą konsekwencje to ciągnie? Zad. 4. Przenieś definicje klasy do pliku nagłówkowego car.h, który to też dodaj do bibliotek pliku main.cpp. Utwórz również plik car.cpp z deklaracją metody z zadania 2. Skompiluj plik car.cpp do biblioteki car.o, a następnie zlinkuj z plikiem main.cpp następująco: g++ main.cpp car.o o main.o Zad. 5. Utwórz plik porsche.h i porsche.cpp. Utwórz klasę Porsche dziedziczącą z klasy Car dodając pole passenger4 i passenger5. Utwórz późne wiązanie do metody wczytującej dane klasy. Zmień nazwę metody wczytującej na read(). W pliku main.cpp ciało funkcji main utwórz analogicznie: int main() { Car* cars[10]; for (int i = 0; i < 10; i++) if (i % 2 == 0) cars[i] = new Car(); else cars[i] = new Porsche(); for (int i = 0; i < 10; i++) cars[i] >read(); UWAGA! Pamiętaj o skompilowaniu i dolinkowaniu biblioteki porsche.o.
8 Pliki Makefile. Jak łatwo zauważyć przy rosnącej liczbie bibliotek łatwo pogubić się w tym co należy przekompilować po zmianie jakiegoś pliku źródłowego bądź nagłówkowego. Powiązania te dalej będziemy nazywać zależnościami. Na pierwszy rzut oka wydawać by się mogło że warto w tym momencie przekompilować wszystkie biblioteki. W rzeczywistych rozwiązaniach kompilowane programy mogą okazać się zbyt duże do tego by przy nawet drobnej zmianie kompilować je od początku (w przypadku dużej aplikacji może to trwać nawet godzinę, a w przypadku całego Windowsa proces ten trwa podobno nawet ponad dobę!). Zależności możemy rozumieć jako graf skierowany z wierzchołkami w plikach i potrzebie przekompilowania jako łuku wychodzącego z pliku, którego modyfikacja musi ciągnąć za sobą zmianę pliku, do którego łuk wchodzi. Przykład grafu zależności: planet.cpp planet.h earth.cpp earth.h mars.cpp mars.h main.cpp main.h planet.o earth.o mars.o main.o planetarium W przypadku zmiany dokonanej w pliku earth.cpp przekompilowaniy zostanie plik earth.o zmieniony plik planetarium: planet.cpp planet.h earth.cpp earth.h mars.cpp mars.h main.cpp main.h planet.o earth.o mars.o main.o planetarium
9 Dla tego grafu najgorszym przypadkiem jest jednak gdy zmieniony zostanie plik planet.h, gdyż wszystkie pliki cpp include'ują go (bezpośrednio lub też pośrednio include'ując plik który go include'uje). planet.cpp planet.h earth.cpp earth.h mars.cpp mars.h main.cpp main.h planet.o earth.o mars.o main.o planetarium W większości realnych przypadków nie będzie jednak takiej sytuacji i tylko część plików.cpp będzie include'owała plik nagłówkowy. Składnia plików Makefile. Jak już wspomniano wcześniej pliki Makefile służą zautomatyzowaniu procesu kompilacji. Żeby jednak plik Makefile działał poprawnie należy wszystkie zależności kompilacji przepisać na język tychże plików. W ogólności plik Makefile składa się z warunków i reguł wykonania: etykieta_wymagania: etykieta_zaleznosci etykieta_zalezności reguła wykonania Należy zwrócić uwagę że przed regułą wykonania należy (w nowej linii) umieścić znak tabulacji. Dla przykładu plik Makefile programu planetarium mógłby wyglądać następująco: all: planetarium planetarium: planet.o earth.o mars.o main.o g++ planet.o earth.o mars.o main.o o planetarium planet.o: planet.cpp planet.h g++ c planet.cpp o planet.o earth.o: earth.cpp earth.h planet.h g++ c earth.cpp o earth.o mars.o: mars.cpp mars.h planet.h g++ c mars.cpp o mars.o main.o: g++ c main.cpp o main.o clean: rm f *.o planetarium
10 UWAGA! Dla poprawnie podanych zależności program make automatycznie wykrywa, które pliki zależności zostały zmienione i ustala ścieżkę kompilacji. Użycie pliku Makefile. W przypadku, gdy plik będzie miał jedną ze standardowych nazw (Makefile, makefile) zostanie automatycznie rozpoznany w bieżącej lokalizacji i pierwsza jego reguła zostanie potraktowana jako ta do wykonania. Wystarczy wtedy wpisać polecenie: make W przypadku gdy nazwiemy plik inaczej lub mamy kilka plików Makefile należy podać programowi make który plik ma wczytać: make f Makefile10 W przypadku gdy chcemy wywołać konkretną regułę pliku Makefile wystarczy podać etykietę reguły. Przykładowo: make clean lub make f Makefile clean Będzie starało się wykonać regułę oznaczoną etykietą clean w pliku Makefile. ZADANIA Zad. 1. Utwórz plik Makefile do zadania 5 z poprzedniej części skryptu. Usuń wszystkie pliki *.o i wykonaj komendę make. Zad. 2. Utwórz skrypt bashowy configure który utworzy plik Makefile dla dowolnej liczby plików cpp w bieżącym katalogu i utworzy program podany jako zmienna zdefiniowana na początku pliku configure. Np.: #!/bin/bash prog=planetarium Skorzystaj do tego celu z przełącznika MM kompilatora g++, podającego informacje na temat zależności konkretnego pliku cpp (patrz manual).
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki zaprojektowany jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych jest to język pozwalający na programowanie zarówno proceduralne
Laboratorium 1 - Programowanie proceduralne i obiektowe
Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?
Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Wprowadzenie Programowanie Obiektowe Mateusz Cicheński Paradygmaty programowania C++ Krótki przykład Kompilacja i linkowanie Makefile Przydatne flagi kompilatora Zaliczenie przedmiotu Harmonogram roku
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Przeciążanie operatorów Słowo
Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.
Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody
Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Operatory na rzecz typu TString
Operatory na rzecz typu TString Dopiszmy w definicji klasy operator[], dzięki któremu potraktujemy obiekt jak tablicę class TString { public: char& operator[]( size_t n ); const char& operator[]( size_t
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi
IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji
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 uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Języki i techniki programowania Ćwiczenia 3 Dziedziczenie
Języki i techniki programowania Ćwiczenia 3 Dziedziczenie Klasa abstrakcyjna Autor: Marcin Orchel Klasa abstrakcyjna to taka, że nie możemy tworzyć obiektów tej klasy, możemy jednak dziedziczyć po tej
Programowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Podstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016
Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac
Rozdział 4 KLASY, OBIEKTY, METODY
Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy
2.4 Dziedziczenie Poprzednie dwa rozdziały które dotyczyły zagadnienia automatów komórkowych na przykładach programów w C++. Mogłyby one sugerować że niekoniecznie trzeba programować obiektowo aby napisać
Materiały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Do czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Programowanie obiektowe
Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;
Pola i metody statyczne. Klasy zawierające pola i metody statyczne
Instrukcja laboratoryjna nr 1 Programowanie w języku C 2 (C++ poziom zaawansowany) Pola i metody statyczne. Klasy zawierające pola i metody statyczne dr inż. Kaczmarek Tomasz mgr inż. Lasota Maciej dr
Programowanie obiektowe
Programowanie obiektowe Laboratorium 3 i 4 - przypomnienie wiadomości o OOP na przykładzie Javy mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 8 marca 2017 1 / 20 mgr inż. Krzysztof Szwarc
TEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
Programowanie obiektowe w języku
Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy
Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.
Spis treści 1 Krótkie wprowadzenie do makefile'a 1.1 Typowa reguła programu make 1.2 Zmienne w pliku Makefile 1.3 Zmienne standardowe 1.4 Zmienne automatyczne 1.5 Więcej o regułach 1.5.1 Reguły z wzorcem
Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.
Umiejętność czytania oraz tworzenia diagramów klas UML jest podstawą w przypadku zawodu programisty. Z takimi diagramami będziesz spotykał się w przeciągu całej swojej kariery. Diagramy klas UML są zawsze
Wykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec
PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie dr inż. Jacek Naruniec Kolokwium wykładowe Pierwsze kolokwium 6 kwietnia Drugie kolokwium 1 czerwca Kolokwium poprawkowe 8 czerwca
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
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki
Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas
Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/
Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
Wykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
PARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane
Operator przypisania. Jest czym innym niż konstruktor kopiujący!
Operator przypisania Jest czym innym niż konstruktor kopiujący! Domyślnie jest zdefiniowany jako przypisanie składowa po składowej (zatem niekoniecznie bajt po bajcie). Dla klasy X definiuje się jako X&
Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28
Programowanie w C++ Wykład 1 Katarzyna Grzelak 26 luty 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28 Dlaczego programowanie? K.Grzelak (Wykład 1) Programowanie w C++ 2 / 28 Umiejętność, która otwiera
Enkapsulacja, dziedziczenie, polimorfizm
17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt
Polimorfizm. dr Jarosław Skaruz
Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody
Programowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 6.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 6.11.2006 1 / 138 Operator przypisania Jest czym innym niż konstruktor kopiujacy!
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Programowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg
Programowanie obiektowe Materiały przygotował: mgr inż. Wojciech Frohmberg Konstruktor Konstruktor w językach zorientowanych obiektowo pełni podwójną rolę: przydziela pamięć na obiekt, zdefiniowany klasą
Definicje klas i obiektów. Tomasz Borzyszkowski
Definicje klas i obiektów Tomasz Borzyszkowski Podstawy Do tej pory używaliśmy klas jedynie po to, by zdefiniować metodę main(). Klasy mają znacznie szersze zastosowanie w Java. W OOP (także w Java) klasy
Programowanie obiektowe Wykład 6. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Wirtualne destruktory class A int* a; A(int _a) a = new int(_a);} virtual ~A() delete a;} class B: public A double* b;
Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Programowanie obiektowe
Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka
KLASY cz.1. Dorota Pylak
KLASY cz.1 Dorota Pylak Do czego służą klasy? 2 W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można
Do czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Przekazywanie argumentów wskaźniki
Przekazywanie argumentów wskaźniki klasyczne wywołanie wyliczenie i zwrotne przekazanie tylko jednej wielkości moŝliwość uŝycia zmiennych globalnych niebezpieczeństwa z tym związane wyjście wywołanie funkcji
Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 6 Katarzyna Grzelak kwiecień 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Mechanizm dziedziczenia
Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia
WPROWADZENIE. Programowanie Obiektowe Mateusz Cicheński
WPROWADZENIE Programowanie Obiektowe Mateusz Cicheński PLAN ZAJĘĆ Paradygmaty programowania C++ Krótki przykład Kompilacja i linkowanie Makefile Przydatne flagi kompilatora Zaliczenie przedmiotu Harmonogram
Wstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Programowanie komputerowe. Zajęcia 1
Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program
Dokumentacja do API Javy.
Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu
Zaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Programy użytkowe (utilities)
nm wypisuje symbole w plikach wykonywalnych, plikach wynikowych (*.o) lub ich kolekcjach (bibliotekach, *.a). Składnia: nm plik. Plik wynikowy, z którego pochodzi symbol. Wartość symbolu. Typ symbolu (najczęściej
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
PHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
Programowanie Proceduralne
Programowanie Proceduralne Makefile Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 14 Co to jest Makefile Makefile jest plikiem reguł dla programu make. Wykorzystywany jest
Definiowanie własnych klas
Programowanie obiektowe Definiowanie własnych klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Definiowanie własnych klas Autor:
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {
Przeciążanie a dziedziczenie class Integer2: public Integer Operatory, z wyjątkiem operatora przypisania są automatycznie dziedziczone w klasach pochodnych. Integer2(int i): Integer(i) Automatyczne tworzenie
Zaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
Wprowadzenie do języka Java
WSNHiD, Programowanie 2 Lab. 1 [ część 1 ] Wprowadzenie do języka Java Wprowadzenie Język programowania Java jest obiektowym językiem programowania. Powstał w 1995 i od tej pory był intensywnie rozwijany.
Programowanie obiektowe Wykład 7. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Relacja ma Przykłady relacji typu ma : Student ma nazwisko Wielokąt ma wierzchołki (punkty) Stos ma elementy Dla obiektów
Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).
Wprowadzenie w dziedziczenie Klasa D dziedziczy klasę B: B klasa bazowa D klasa pochodna Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class). Najpierw jest tworzona klasa bazowa,
Język C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski
Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski dr Dariusz Wardowski, Instytut Matematyki i Informatyki PWSZ w Płocku 1 O mnie prowadzący wykład i laboratoria: Dariusz Wardowski pokój: 102
Programowanie w Internecie. Java
Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java
Wprowadzenie do programowanie obiektowego w języku C++
Wprowadzenie do programowanie obiektowego w języku C++ Część czwarta Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura
Wstęp do programowania. Wykład 1
Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.
Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
.NET Klasy, obiekty. ciąg dalszy
.NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,
Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31
Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki: