Zofia Kruczkiewicz, ETE8305_2 1

Podobne dokumenty
Wprowadzenie do programowania obiektowego w C++

Co nie powinno być umieszczane w plikach nagłówkowych:

Szablony klas, zastosowanie szablonów w programach

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

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

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Dziedziczenie jednobazowe, poliformizm

Laboratorium 1 - Programowanie proceduralne i obiektowe

Projektowanie klas c.d. Projektowanie klas przykład

Podział programu na moduły

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

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

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)

PARADYGMATY PROGRAMOWANIA Wykład 2

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

Wykład. Materiały bazują częściowo na slajdach Marata Dukhana

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 w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

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

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

Wykład 5 Okna MDI i SDI, dziedziczenie

ALGORYTMY I STRUKTURY DANYCH

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Qt sygnały i designer

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

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

Podstawy Programowania Obiektowego

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

Dziedziczenie wielobazoweuzupełnienie

TEMAT : KLASY DZIEDZICZENIE

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

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

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Języki i metody programowania Java. Wykład 2 (część 2)

Abstrakcyjne struktury danych w praktyce

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

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

Wprowadzenie do szablonów szablony funkcji

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

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak

Wprowadzenie do szablonów szablony funkcji

Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

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

Programowanie w Internecie. Java

1. Abstrakcyjne typy danych

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

Języki i metody programowania Java INF302W Wykład 2 (część 1)

I - Microsoft Visual Studio C++

Programowanie obiektowe

TEMAT : KLASY POLIMORFIZM

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

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

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

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Część 4 życie programu

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Szablony funkcji i szablony klas

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Wykład 4: Klasy i Metody

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

#line #endif #ifndef #pragma

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie obiektowe

PODEJŚCIE OBIEKTOWE. Przykład 1 metody i atrybuty statyczne

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

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

Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

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

Materiały do zajęć VII

Języki i metody programowania Java Lab2 podejście obiektowe

Wstęp do Programowania 2

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

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.

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Wykład 8: klasy cz. 4

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Programowanie obiektowe

Języki programowania - podstawy

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

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

Wprowadzenie do szablonów klas

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

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

Zaawansowane programowanie w C++ (PCP)

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

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Szablony funkcji i klas (templates)

Podstawy programowania obiektowego

Abstrakcyjny typ danych

Transkrypt:

Wprowadzenie do programowania obiektowego w C++ 1. Główne zasady programowania obiektowego: hermetyzacja, dziedziczenie, polimorfizm 2. Pojęcie klasy: sposoby deklarowania i definiowania składowych klasy, 3. Atrybuty dostępu do składowych - private, protected i public wspierające hermetyzację 4. Konstruktory i destruktory 5. Obiekty automatyczne, statyczne i dynamiczne 6. Składowe klasy typu static 7. Zmienne referencyjne, przekazywanie parametrów przez referencję, autoreferencja 8. Pliki nagłówkowe, dyrektywy preprocesora, programy wieloplikowe Zofia Kruczkiewicz, ETE8305_2 1

#include <iostrem.h> - dołączenie pliku nagłówkowego z katalogu standardowego #include TProdukt1.h - dołączanie pliku nagłówkowego z katalogu bieŝącego Pliki nagłówkowe powinny zawierać: definicje typów np. class punkt { float x, y; public: punkt (float, float); void przesun (float, float); }; szablony funkcji i klas template <class T> class stos { //...} prototypy funkcji np. void wyswietl_float(float); definicje funkcji typu inline inline int Większy(int x, int y) {return x > y; } deklaracje zmiennych extern int zmienna; definicje stałych const int max = 3; wyliczenia enum Boolean {False, True}; deklaracje nazw class kolo; dyrektywy #include <iostream.h> funkcje makra #define MAX(x, y) ((x) > (y)? (x) : (y)) Zofia Kruczkiewicz, ETE8305_2 2 stałe jawne #define TRUE 1

Uwaga: Nie naleŝy nigdy wstawiać do pliku nagłówkowego: definicji zwykłych funkcji: int Większy(int x, int y) {return x > y; } definicji zmiennych: int zmienna; definicji stałych agregatów np. const char tab[] = aaa ; Zofia Kruczkiewicz, ETE8305_2 3

Przykład podziału programu na moduły funkcje interfejsu programu funkcje we_wy funkcja main, funkcje uŝytku jednorazowego definiowany typ w postaci klasy dodatki.h void f(); int z; strukt.h we_wy.h mkolejka.h dodatki.cpp we_wy.cpp kolejka.cpp main() mkolejka.cpp Kompilacja dodatki.obj we_wy.obj kolejka.obj mkolejka.obj Łączenie kolejka.exe tworzenie jednego pliku, definiowanie nazw z plików nagłówkowych Zofia Kruczkiewicz, ETE8305_2 4

Przykład podziału programu na moduły funkcje we_wy funkcja main, funkcje uŝytku jednorazowego definiowany typ w postaci klasy iostream.h Biblioteka Borland Builder C++ produkty.cpp main() TProdukt1.h TProdukt1.cpp Kompilacja produkty.obj TProdukt1.obj Łączenie produkty.exe tworzenie jednego pliku, definiowanie nazw z plików nagłówkowych Zofia Kruczkiewicz, ETE8305_2 5

Zakładanie projektu wieloplikowego (File/New/Other) Zofia Kruczkiewicz, ETE8305_2 6

Wybór typu projektu na typ konsolowy (Console Wizard) Zofia Kruczkiewicz, ETE8305_2 7

Ustawienie parametrów projektu Zofia Kruczkiewicz, ETE8305_2 8

Projekt z domyślnym plikiem Unit1.cpp Zofia Kruczkiewicz, ETE8305_2 9

Zmiana nazwy projektu i nazwy domyślnej pliku zapis projektu w wybranym miejscu na dysku Zofia Kruczkiewicz, ETE8305_2 10

Wybór katalogu projektu Zofia Kruczkiewicz, ETE8305_2 11

Zmiana nazwy pliku domyślnego zapisywanego w wybranym katalogu Zofia Kruczkiewicz, ETE8305_2 12

Zmiana nazwy projektu tworzonego w nowym katalogu Zofia Kruczkiewicz, ETE8305_2 13

Tworzenie kodu pliku z funkcją main Zofia Kruczkiewicz, ETE8305_2 14

Tworzenie nowego pliku typu cpp Zofia Kruczkiewicz, ETE8305_2 15

Wybór typu pliku Zofia Kruczkiewicz, ETE8305_2 16

Nowy plik o domyślnej nazwie File1.cpp Zofia Kruczkiewicz, ETE8305_2 17

Nadanie nowej nazwy plikowi Zofia Kruczkiewicz, ETE8305_2 18

Podanie nowej nazwy TProdukt1.cpp Zofia Kruczkiewicz, ETE8305_2 19

Plik TProdukt1.cpp - pusty Zofia Kruczkiewicz, ETE8305_2 20

Wstawienie kodu definicje metod klasy TProdukt1.cpp Zofia Kruczkiewicz, ETE8305_2 21

Tworzenie nowego pliku nagłówkowego Zofia Kruczkiewicz, ETE8305_2 22

Wybór typu pliku nagłówkowego Zofia Kruczkiewicz, ETE8305_2 23

Nowy plik nagłówkowy o nazwie domyślnej File1.h Zofia Kruczkiewicz, ETE8305_2 24

Zmiana nazwy pliku nagłówkowego Zofia Kruczkiewicz, ETE8305_2 25

Podanie nazwy TProdukt1.h Zofia Kruczkiewicz, ETE8305_2 26

Plik nagłówkowy TProdukt1.h - pusty Zofia Kruczkiewicz, ETE8305_2 27

Plik nagłówkowy TProdukt1.h z kodem klasy TProdukt1 Zofia Kruczkiewicz, ETE8305_2 28

Wstawianie jedynie plików typu cpp do projektu pliki nagłówkowe są dołączane przez dyrektywę include Zofia Kruczkiewicz, ETE8305_2 29

Dodawanie plików cpp do projektu Zofia Kruczkiewicz, ETE8305_2 30

Wybór plików cpp Zofia Kruczkiewicz, ETE8305_2 31

Kompilacja i linkowanie projektu Build Zofia Kruczkiewicz, ETE8305_2 32

Okno potwierdzające poprawność kompilacji i linkowania Zofia Kruczkiewicz, ETE8305_2 33

Uruchomienie programu - Run Zofia Kruczkiewicz, ETE8305_2 34

Działający program konsolowy Zofia Kruczkiewicz, ETE8305_2 35

Program 6 program wieloplikowy //plik nagłówkowy TProdukt1.h nie naleŝy go wstawiać do projektu //--------------------------------------------------------------------------- #include <iostream.h> //--------------------------------------------------------------------------- #ifndef TPRODUKT1 //warunkowe dołączanie zawartości pliku #define TPRODUKT1 class TProdukt1 { //protected: string nazwa; float cena; public: TProdukt1(string, float ); TProdukt1(TProdukt1&); ~TProdukt1(); float Podaj_cene(); void Nadaj_cene(float ); string Podaj_nazwe (); void Nadaj_nazwe(string ); int Porownaj_produkty(TProdukt1 ); void Wyswietl(); }; #endif // nagłówkowego Zofia Kruczkiewicz, ETE8305_2 36

#include "TProdukt1.h" // zawartość pliku modułowego TProdukt1.cpp TProdukt1::TProdukt1(string nazwa_, float cena_) { cout<<"wywolany zwykly konstruktor z parametrami"<<endl; nazwa = nazwa_; cena = cena_; } TProdukt1::TProdukt1(TProdukt1& p) { cout<<"wywolany konstruktor kopiujacy"<<endl; nazwa = p.nazwa; cena = p.cena; } TProdukt1::~TProdukt1() { cout << "Wywolany destrutor"<<endl; } float TProdukt1::Podaj_cene() { return cena; } void TProdukt1::Nadaj_cene(float cena_) { cena = cena_; } string TProdukt1::Podaj_nazwe () { return nazwa; } void TProdukt1::Nadaj_nazwe(string nazwa_) { nazwa = nazwa_;} int TProdukt1::Porownaj_produkty(TProdukt1 p) { return Podaj_nazwe()==p.Podaj_nazwe() && Podaj_cene()==p.Podaj_cene(); } void TProdukt1::Wyswietl() Zofia Kruczkiewicz, ETE8305_2 37 { cout<<"cena produktu: "<<cena<<", Nazwa produktu: "<<nazwa<<endl; }

//--------------------------------------------------------------------------- #include "TProdukt1.h" //zawartość pliku z funkcją main //--------------------------------------------------------------------------- int main(int argc, char* argv[]) { { TProdukt1 produkt1("zeszyt", 3.5), produkt2("atrament", 1.6); produkt1.wyswietl(); produkt2.wyswietl(); if (produkt1.porownaj_produkty(produkt2)) cout<<"produkty maja rowne atrybuty"<<endl; } else cout<<"produkty nie maja rownych atrybutow"<<endl; } cout<<"tutaj juz nie ma obiektow"<<endl; //produkt1.wyswietl(); cin.get(); return 0; Zofia Kruczkiewicz, ETE8305_2 38