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

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

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 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

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

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

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

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

Pliki wykład 2. Dorota Pylak

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

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

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

Operacje wejścia/wyjścia (odsłona druga) - pliki

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

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

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

Projektowanie klas c.d. Projektowanie klas przykład

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

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

Język C++ wykład VIII

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Pliki wykład 2. Dorota Pylak

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Wykład :37 PP2_W9

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

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

Operacje wejścia/wyjścia odsłona pierwsza

Pliki wykład. Dorota Pylak

PARADYGMATY PROGRAMOWANIA Wykład 3

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

Operatory na rzecz typu TString

Wstęp do Programowania 2

Podstawy programowania skrót z wykładów:

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

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

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

PARADYGMATY PROGRAMOWANIA Wykład 2

Programowanie - wykład 4

Wstęp do programowania. Dariusz Wardecki, wyk. X

Zofia Kruczkiewicz, ETE8305_2 1

Podstawy Programowania

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Pliki wykład. Dorota Pylak

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

dr inż. Jarosław Forenc

PROE wykład 4 pozostałe operatory, forward declaration, dziedziczenie. dr inż. Jacek Naruniec

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

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Wstęp do Programowania 2

Programowanie obiektowe w C++ Wykład 12

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

Programowanie komputerowe. Zajęcia 7

Zajęcia nr 4 Programowanie obiektowe konstruktory. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Wstęp do informatyki- wykład 11 Funkcje

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

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

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

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Wstęp do informatyki- wykład 9 Funkcje

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

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Programowanie w językach

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

Wstęp do Programowania 2

Dziedziczenie & W slajdach są materiały zapożyczone z

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Konstruktor kopiujacy

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

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

Część 4 życie programu

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

Wprowadzenie do programowania i programowanie obiektowe

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Programowanie obiektowe

Plik klasy. h deklaracje klas

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Zad. 5: Układ równań liniowych liczb zespolonych

Podstawy programowania w C++

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

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.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

Transkrypt:

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 funkcje składowe (metody) K.Grzelak (Wykład 9) Programowanie w C++ 2 / 30

Podział na pliki.h i.cc Każda klasa w osobnym pliku (na ogół) W pliku nagłówkowym (rozszerzenie.h) definicja klasy W pliku.cc (lub.cpp,.cxx... ) definicje funkcji składowych K.Grzelak (Wykład 9) Programowanie w C++ 3 / 30

Plik nagłówkowy z definicja klasy Średnik na końcu! Przykład: Wektor2D.h #ifndef WEKTOR2D_H #define WEKTOR2D_H class Wektor2D { public: void ustaw(double a1, double b1, double a2, double b2); double dlugosc(); private: double x1,y1,x2,y2; }; #endif K.Grzelak (Wykład 9) Programowanie w C++ 4 / 30

Plik z definicjami funkcji składowych Przykład: Wektor2D.cc #include<cmath> #include "Wektor2D.h" void Wektor2D::ustaw(double a1, double b1, double a2, double b2){ x1=a1; y1=b1; x2=a2; y2=b2; } double Wektor2D::dlugosc(){ double d=sqrt((x2-x1)*(x2-x1) +(y2-y1)*(y2-y1)); return d; } K.Grzelak (Wykład 9) Programowanie w C++ 5 / 30

Enkapsulacja Enkapsulacja - ukrycie wewnętrznej struktury Dane składowe zwykle deklarowane jako prywatne; dostęp do nich tylko za pomoca funkcji składowych. Konsekwencje enkapsulacji Program używajacy danej klasy nie musi znać jej struktury danych Można przebudować klasę, a użycie będzie niezmienione (jeśli prototypy funkcji składowych będa niezmienione) K.Grzelak (Wykład 9) Programowanie w C++ 6 / 30

Główny program, użycie nowego typu zmiennej Przykład: prog.cc #include<iostream> #include "Wektor2D.h" using namespace std; int main(){ Wektor2D v1; v1.ustaw(0.5,0.2,1.5,0.8); cout «v1.dlugosc() «endl; return 0; } K.Grzelak (Wykład 9) Programowanie w C++ 7 / 30

Podział na pliki.h i.cc Dlaczego klasy zapisuje się w oddzielnych plikach? Tej samej klasy można łatwo używać w wielu miejscach Każda klasę kompiluje się tylko raz (szczególnie ważne w dużych projektach) K.Grzelak (Wykład 9) Programowanie w C++ 8 / 30

Kompilacja programu zapisanego w kilku plikach Gdy program złożony z niewielkiej liczby plików: g++ -o prog prog.cc Wektor2D.cc Pliki nagłówkowe właczane automatycznie przez preprocesor (polecenie #include wewnatrz plików.cc) Większe projekty proces kompilacji zapisany w pliku Makefile (więcej na jednym z następnych wykładów); środowiska do kompilacji K.Grzelak (Wykład 9) Programowanie w C++ 9 / 30

Użycie nowego typu Deklaracja zmiennej typu Wektor2D: Wektor2D v1; Przekazywanie obiektu typu Wektor2D do funkcji jak w przypadku zwykłych typów: przez wartość (niedobre rozwiazanie gdy duży obiekt): void (Wektor2D v1); przez referencję (jeśli funkcja ma zmieniać obiekt): void (Wektor2D &v1); przez referencję (jeśli funkcja ma nie zmieniać obiektu): void (const Wektor2D &v1); K.Grzelak (Wykład 9) Programowanie w C++ 10 / 30

Konstruktor, czyli rozbudowujemy klasę Konstruktor czyli powołanie do życia obiektu i nadanie wartości danym składowym w jednej linijce Tak można zrobić przy użyciu funkcji składowej... Wektor2D v1; v1.ustaw(0.5,0.2,1.5,0.8);... ale tak byłoby prościej: Wektor2D v1(0.5,0.2,1.5,0.8); K.Grzelak (Wykład 9) Programowanie w C++ 11 / 30

Konstruktor Konstruktor to specjalna funkcja składowa wywoływana automatycznie przy tworzeniu obiektu. Konstruktor nazywa się tak samo jak klasa Przed nazwa nie ma żadnego typu wartości zwracanej; nie ma return Konstruktorów może być kilka (z różnymi argumentami) K.Grzelak (Wykład 9) Programowanie w C++ 12 / 30

Konstruktor Przykłady konstruktorów klasy Wektor2D // Konstruktor standardowy Wektor2D(){}; // Drugi konstruktor Wektor2D(double a1, double b1, double a2, double b2){ x1=a1; y1=b1; x2=a2; y2=b2; } K.Grzelak (Wykład 9) Programowanie w C++ 13 / 30

Konstruktor Przykłady konstruktorów klasy Wektor2D // Konstruktor standardowy Wektor2D(){}; // Inny zapis konstruktora // z poprzedniej klasy // (prawie równoważny) Wektor2D(double a1,double b1,double a2,double b2): x1(a1),y1(b1),x2(a2),y2(b2) { } W definicji klasy może nie być konstruktora konstruktor standardowy zostanie stworzony automatycznie. K.Grzelak (Wykład 9) Programowanie w C++ 14 / 30

Cały plik nagłówkowy z konstruktorami #ifndef WEKTOR2D_H #define WEKTOR2D_H class Wektor2D { public: Wektor2D(){}; // konstruktor standardowy Wektor2D(double a1,double b1,double a2,double b2): x1(a1),y1(b1),x2(a2),y2(b2) { } // drugi // konstruktor void ustaw(double a1, double b1, double a2, double b2); double dlugosc(); private: double x1,y1,x2,y2; }; #endif K.Grzelak (Wykład 9) Programowanie w C++ 15 / 30

Konstruktor - użycie // Tutaj zostanie uruchomiony // standardowy konstruktor Wektor2D v1; v1.ustaw(0.5,0.2,1.5,0.8); // Tutaj zostanie uruchomiony drugi // konstruktor Wektor2D v1(0.5,0.2,1.5,0.8); K.Grzelak (Wykład 9) Programowanie w C++ 16 / 30

Destruktor Destruktor to specjalna funkcja składowa wywoływana automatycznie przed likwidacja obiektu. Destruktor nazywa się tak samo jak klasa + falka przed nazwa. Przed nazwa nie ma żadnego typu wartości zwracanej; nie ma return W definicji klasy może nie być destruktora. K.Grzelak (Wykład 9) Programowanie w C++ 17 / 30

Cały plik nagłówkowy z konstruktorami i destruktorem #ifndef WEKTOR2D_H #define WEKTOR2D_H class Wektor2D { public: Wektor2D(){}; // konstruktor standardowy Wektor2D(double a1,double b1,double a2,double b2): x1(a1),y1(b1),x2(a2),y2(b2) { } // drugi konstruktor Wektor2D() { } // destruktor void ustaw(double a1, double b1, double a2, double b2); double dlugosc(); private: double x1,y1,x2,y2; }; #endif K.Grzelak (Wykład 9) Programowanie w C++ 18 / 30

Wybrane klasy z biblioteki standardowej klasa string K.Grzelak (Wykład 9) Programowanie w C++ 19 / 30

Klasa string - konstruktory #include<string> Pusty string, użyty standardowy konstruktor: string wyraz; string = Ala ma kota ; Inicjalizacja stringu (konstruktor niestandardowy): string napis1( Ala ma kota ); char tab[20]={ Ala ma psa }; string napis2(tab); K.Grzelak (Wykład 9) Programowanie w C++ 20 / 30

Klasa string - funkcje składowe size() z ilu znaków składa się string empty() zwraca true, jeśli string jest pusty clear() - kasuje zawartosc obiektu at(pozycja), [pozycja] odniesienie do znaku znajdujacego się na pozycji pozycja c_str() zamiana obiektu z klasy string na c-string... K.Grzelak (Wykład 9) Programowanie w C++ 21 / 30

Wybrane klasy z biblioteki standardowej o strumieniach Wprowadzanie i wyprowadzanie informacji strumień bajtów płynacy od źródła do ujścia. K.Grzelak (Wykład 9) Programowanie w C++ 22 / 30

Strumienie 1 Standardowe strumienie wejściowe i wyjściowe (klawiatura, ekran) 2 Strumienie zwiazane z plikami 3 Strumienie zapisujace do/czytajace z obiektu string K.Grzelak (Wykład 9) Programowanie w C++ 23 / 30

Pliki Pamiec glowna Pamiec zewnetrzna File buffer Write Read File K.Grzelak (Wykład 9) Programowanie w C++ 24 / 30

Pliki Plik nagłówkowy #include<fstream> ifstream - klasa do czytania z pliku ofstream - klasa do pisania do pliku K.Grzelak (Wykład 9) Programowanie w C++ 25 / 30

Klasa ofstream - do pisania do plików #include<fstream> Otwieranie pliku do pisania (jeśli istniał, zostanie skasowany): ofstream fileout; fileout.open( out.txt ); lub ofstream fileout( out.txt ); Dopisywanie do końca pliku: ofstream fileout( out.txt,ios::app); K.Grzelak (Wykład 9) Programowanie w C++ 26 / 30

Klasa ofstream - do pisania do plików Analogicznie do cout: ofstream fileout( out.txt ); fileout1 «Tekst «endl; fileout1 «M_PI ««M_PI*M_PI «endl; fileout1.close(); K.Grzelak (Wykład 9) Programowanie w C++ 27 / 30

Klasa ifstream - do czytania z plików #include<fstream> Otwieranie pliku do czytania: ifstream fileinp; fileinp.open( data.txt ); lub ifstream fileinp( data.txt ); Zaraz za otwarciem sprawdzanie czy plik nie istnieje: if(fileinp.fail()){ cout «Plik nie istnieje «endl; } lub if(!fileinp) { cout «Plik nie istnieje «endl; } K.Grzelak (Wykład 9) Programowanie w C++ 28 / 30

Klasa ifstream - do czytania z plików Nazwa pliku wczytywana z klawiatury: cout «Podaj nazwe pliku «endl; string nazwa; cin» nazwa; ifstream fileinp(nazwa.c_str()); K.Grzelak (Wykład 9) Programowanie w C++ 29 / 30

Klasa ifstream - do czytania z plików Analogicznie do cin: int liczba; while(true){ fileinp1» liczba; if(!fileinp1){ break; } } lub while(fileinp1» liczba){ cout «Wczytana liczba = «liczba «endl; } K.Grzelak (Wykład 9) Programowanie w C++ 30 / 30