1 PROGRAMOWANIE OBIEKTOWE· metoda tworzenia oprogramowania · obiekt odwzorowanie wycinka rzeczywistości · obiekt zawiera: – dane – struktury danych – operacje ( funkcje ) · klasa definicja obiektów o takiej samej budowie
2 double Wartosc ( double Liczba, double Cena){ return Liczba * Cena; } // double wartosc, liczba = 45, cena = 12.7; wartosc = Wartosc ( liczba, cena ); // ok double brutto, netto = 248.4, tara = 23.4; brutto = Wartosc ( netto, tara ); // ???
3 Konto · hermetyzacja danych numer typ wlasciciel kwota stan wplata ( )wyplata ( ) blokada ( ) oprocentowanie ( ) · hermetyzacja danych
4 · relacja całość – częśćSamochod Nadwozie Silnik Wyposazenie kolor cena
5 · relacja generalizacji – specjalizacjiPojazdyKolowe PojazdySilnikowe PojazdyElektryczne PojazdySpalinowe
6 streamIO:57 Autobus Trolejbus LiczbaKol LiczbaKol MocSilnikaNapiecieZasilania Autobus LiczbaKol MocSilnika RodzajPaliwa streamIO:57
7 · klasa składowe klasy : dane, struktury danych, funkcje atrybuty metody · definicja klasy class identyfikator_klasy { treść_klasy } ;
8 class Prostokat { public: float Szerokosc ; float Wysokosc ; float Powierzchnia ( ) return Szerokosc * Wysokosc ; } } ;
9 class identyfikator_klasy ;· deklaracja klasy class identyfikator_klasy ; · prawa dostępu do składowych klasy – public : – private : – protected :
10 class Pojemnik { private: int Zawartosc ; public: int Pozostalo ( ) { return Zawartosc ; } void Dodaj ( ) { ++ Zawartosc ; } void Zabierz ( ) { -- Zawartosc ; } } ;
11 class Abazur { private: //składowe prywatne public: //składowe powszechne };
12 class Baklazan { //składowe prywatne public: //składowe powszechne private: } ; · definiowanie składowych – dane ( bez wartości początkowych ) – funkcje : w treści klasy lub poza klasą
13 class Towar { private: char *Nazwa ; float Cena ; int Liczba ; public: float Wartosc ( ) { return Cena * Liczba ; } void Przecena ( int ) ; } ; void Towar :: Przecena (int Procent ) { if ( Cena > CENA_ZAKUPU && Liczba > MAKSYMALNY_ZAPAS) Cena *= ( 100 Procent ) / 100 ; }
14 · funkcje różnych klas mogą mieć takie same identyfikatoryclass Osoba { char *Imie ; public: void Wyswietl ( ) ; } ; class Rura { int Dlugosc ; void Wyswietl ( );
15 void Osoba :: Wyswietl ( ){ printf( " %s", Imie ) ; } // void Rura :: Wyswietl ( ) printf ( " %d cm", Dlugosc);
16 · wartości domyślne argumentów funkcjiclass Cement { private: float Masa ; // kg public: float Ciezar ( float = ) ; } ; // float Cement :: Ciezar( float Przyspieszenie ) return Masa * Przyspieszenie ; // N }
17 · rodzaje funkcji składowych– funkcje zarządzające ( konstruktory, destruktory ), – funkcje dostępu, – funkcje przetwarzające, – funkcje pomocnicze.
18 bool Odpowiednie ( char* ) ;class Konto { private: char *Wlasciciel ; float Depozyt ; bool Blokada ; public: char* CzyjeKonto ( ) { return Wlasciciel ; } bool JestBlokada ( ) { return Blokada ; } float Wyplata ( char*, int ) ; } ;
19 float Konto :: Wyplata ( char* Haslo , int Kwota ){ if ( Odpowiednie ( Haslo ) ) { Depozyt -= Kwota ; return Depozyt ; } else return 1f ;
20 · tworzenie obiektów klas– statycznie ( deklaracja ) – dynamicznie ( new ) · inicjowanie składowych powszechnych class Dlugopis { public: char Kolor [ 16 ] ; bool Jednorazowy ; } Pisz1, Pisz2 = { "czarny", true }, Pisz3 = { "niebieski", false } ;
21 Dlugopis Pisz4, *pPisz5 = &Pisz4 ;Dlugopis &Pisz6 = Pisz2 ; Dlugopis *pPisz7 = new Dlugopis ; Dlugopis Pisz8 = { "czerwony", true } ; · dostęp do składowych obiektu: – poprzez identyfikator, referencję : . – poprzez wskaźnik : –> Odcinek_0
22 class Ksiazka { public: int Cena; int Przecena ( int Procent ) {Cena = Cena * (100 - Procent) / 100; return Cena; } }; Ksiazka K1 = { 35 }, K2 = { 29 }; Ksiazka *w1 = & K1, *w2 = & K2 ; int Ile; Ile = K1.Cena ; Ile = K2.Cena ; Ile = w1 –> Cena ; Ile = K1.Przecena ( 10 ); // K1.Cena = 31 Ile = K2.Przecena ( 5 ); // K2.Cena = 27 w1 –> Przecena ( 5 ); // K1.Cena = 29 w2 –> Przecena ( 2 ); // K2.Cena = 26 Cena ; Ile = K1.Przecena ( 10 ); // K1.Cena = 31. Ile = K2.Przecena ( 5 ); // K2.Cena = 27. w1 –> Przecena ( 5 ); // K1.Cena = 29. w2 –> Przecena ( 2 ); // K2.Cena = 26.", "width": "800" } 23 · stosowanie konstruktorów i destruktorów– konstruktor tworzenie obiektu – destruktor usuwanie obiektu · wywoływane automatycznie { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/23/%C2%B7+stosowanie+konstruktor%C3%B3w+i+destruktor%C3%B3w.jpg", "name": "· stosowanie konstruktorów i destruktorów", "description": "– konstruktor tworzenie obiektu. – destruktor usuwanie obiektu. · wywoływane automatycznie.", "width": "800" } 24 #include class Ulica { private: char *Nazwa ; float Dlugosc ; public: // konstruktor Ulica ( char *Tekst, float Kilometry ) { Nazwa = new char[strlen ( Tekst ) + 1]; strcpy (Nazwa, Tekst ) ; Dlugosc = Kilometry ; } } ; Ulica Droga1 = Ulica ( "Polna", 3.8 ) ; Ulica Droga2 ( "Rolna", 4.2 ) ; Ulica *pDroga3 = new Ulica ( "Mylna", 2.5 ) ; Ulica Droga4 = { "Dolna", 1.1 } ; // błąd, składowe prywatne { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/24/%23include+%3Cstring.h%3E.jpg", "name": "#include ", "description": "class Ulica. { private: char *Nazwa ; float Dlugosc ; public: // konstruktor. Ulica ( char *Tekst, float Kilometry ) { Nazwa = new char[strlen ( Tekst ) + 1]; strcpy (Nazwa, Tekst ) ; Dlugosc = Kilometry ; } } ; Ulica Droga1 = Ulica ( Polna , 3.8 ) ; Ulica Droga2 ( Rolna , 4.2 ) ; Ulica *pDroga3 = new Ulica ( Mylna , 2.5 ) ; Ulica Droga4 = { Dolna , 1.1 } ; // błąd, składowe prywatne.", "width": "800" } 25 #include class Most { float Dlugosc ; char Rzeka [ 32 ], Typ [ 16 ] ; public: Most (float, char*, char* = "przeslowy" ) ; } ; Most :: Most ( float Kilometry, char* Woda = "Warta", char* Rodzaj ) { Długosc = Kilometry ; strcpy ( Rzeka, Woda ) ; strcpy ( Typ, Rodzaj ) ; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/25/%23include+%3Cstring.h%3E.jpg", "name": "#include ", "description": "class Most. { float Dlugosc ; char Rzeka [ 32 ], Typ [ 16 ] ; public: Most (float, char*, char* = przeslowy ) ; } ; Most :: Most ( float Kilometry, char* Woda = Warta , char* Rodzaj ) { Długosc = Kilometry ; strcpy ( Rzeka, Woda ) ; strcpy ( Typ, Rodzaj ) ; }", "width": "800" } 26 Most Elzbiety( 1.2, "Dunaj", "wiszący" ) ;Most Poniatowskiego ( 1.8, "Wisła" ) ; Most Rocha ( 0.8 ) ; · konstruktor domyślny class Punkt { public: float Rzedna, Odcieta ; } ; Punkt ( ) { } // domyślny Odcinek_1 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/26/Most+Elzbiety%28+1.2%2C+Dunaj+%2C+wisz%C4%85cy+%29+%3B.jpg", "name": "Most Elzbiety( 1.2, Dunaj , wiszący ) ;", "description": "Most Poniatowskiego ( 1.8, Wisła ) ; Most Rocha ( 0.8 ) ; · konstruktor domyślny. class Punkt. { public: float Rzedna, Odcieta ; } ; Punkt ( ) { } // domyślny. Odcinek_1.", "width": "800" } 27 · lista powiązań class Trojkat { private: int BokA, BokB, BokC ; public: Trojkat ( int, int, int ) ; } ; Trojkat :: Trojkat( int A, int B, int C ): BokA ( A ), BokB ( B ) { BokC = C ; } Trojkat Triak1 ( 3, 12, 8 ) ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/27/%C2%B7+lista+powi%C4%85za%C5%84+class+Trojkat.+%7B+private%3A+int+BokA%2C+BokB%2C+BokC+%3B+public%3A+Trojkat+%28+int%2C+int%2C+int+%29+%3B.jpg", "name": "· lista powiązań class Trojkat. { private: int BokA, BokB, BokC ; public: Trojkat ( int, int, int ) ;", "description": "} ; Trojkat :: Trojkat( int A, int B, int C ): BokA ( A ), BokB ( B ) { BokC = C ; } Trojkat Triak1 ( 3, 12, 8 ) ;", "width": "800" } 28 · konstruktory przeciążone#include class Tekst { int Dlugosc ; char* Napis ; public: Tekst ( int ) ; // konstruktor I Tekst ( char* ); // konstruktor II Tekst ( ) // konstruktor III { Dlugosc = 0 ; Napis = NULL ; } } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/28/%C2%B7+konstruktory+przeci%C4%85%C5%BCone.jpg", "name": "· konstruktory przeciążone", "description": "#include class Tekst. { int Dlugosc ; char* Napis ; public: Tekst ( int ) ; // konstruktor I. Tekst ( char* ); // konstruktor II. Tekst ( ) // konstruktor III. { Dlugosc = 0 ; Napis = NULL ; } } ;", "width": "800" } 29 Tekst ::Tekst ( int Znaki ) :Dlugosc ( Znaki ) { char* Pomoc = new char [ Znaki ] ; Napis = Pomoc ; for ( int Kolejny = 1 ; Kolejny < Znaki ; ++Kolejny ) *Pomoc++ = 'x' ; *Pomoc = 0 ; } // Tekst :: Tekst ( char *Tek ) { Dlugosc = strlen ( Tek ) ; Napis = new char[ Dlugosc + 1 ] ; strcpy ( Napis, Tek ) ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/29/Tekst+%3A%3ATekst+%28+int+Znaki+%29+%3A.jpg", "name": "Tekst ::Tekst ( int Znaki ) :", "description": "Dlugosc ( Znaki ) { char* Pomoc = new char [ Znaki ] ; Napis = Pomoc ; for ( int Kolejny = 1 ; Kolejny < Znaki ; ++Kolejny ) *Pomoc++ = x ; *Pomoc = 0 ; } // Tekst :: Tekst ( char *Tek ) { Dlugosc = strlen ( Tek ) ; Napis = new char[ Dlugosc + 1 ] ; strcpy ( Napis, Tek ) ;", "width": "800" } 30 Tekst Proza1 ( 17 ) ; // konstruktor ITekst Proza2 ( "samochód osobowy" ) ; // konstruktor II Tekst Proza3 ; // konstruktor III Tekst Proza4 = Tekst ( ) ; // konstruktor III Tekst Proza5 ( ) ; // błąd - // deklaracja funkcji bezargumentowej // o wyniku typu Tekst Tekst *pProza6 = new Tekst ( 12.7 ) ; // konstruktor I po // standardowej konwersji argumentu Odcinek_2 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/30/Tekst+Proza1+%28+17+%29+%3B+%2F%2F+konstruktor+I.jpg", "name": "Tekst Proza1 ( 17 ) ; // konstruktor I", "description": "Tekst Proza2 ( samochód osobowy ) ; // konstruktor II. Tekst Proza3 ; // konstruktor III. Tekst Proza4 = Tekst ( ) ; // konstruktor III. Tekst Proza5 ( ) ; // błąd - // deklaracja funkcji bezargumentowej // o wyniku typu Tekst. Tekst *pProza6 = new Tekst ( 12.7 ) ; // konstruktor I po // standardowej konwersji argumentu. Odcinek_2.", "width": "800" } 31 · destruktor class Pracownik { char *Nazwisko ; float Uposazenie ; public: Pracownik ( char*, float ) ; // konstruktor ~Pracownik ( ) ; // destruktor } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/31/%C2%B7+destruktor+class+Pracownik.+%7B+char+%2ANazwisko+%3B+float+Uposazenie+%3B+public%3A.jpg", "name": "· destruktor class Pracownik. { char *Nazwisko ; float Uposazenie ; public:", "description": "Pracownik ( char*, float ) ; // konstruktor. ~Pracownik ( ) ; // destruktor. } ;", "width": "800" } 32 Pracownik :: Pracownik( char *Nazwa, float Pensja ) : Uposazenie ( Pensja ) { Nazwisko = new char[strlen(Nazwa) + 1] ; strcpy ( Nazwisko, Nazwa ) ; } Pracownik :: ~Pracownik ( ) { printf ("\n%s - Panu już dziękujemy.\n", Nazwisko ); delete Nazwisko ; } // Pracownik *Rob1 = new Pracownik( "Wiśniewski", 1500 ); delete Rob1; // Wiśniewski - Panu już dziękujemy. { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/32/Pracownik+%3A%3A+Pracownik.jpg", "name": "Pracownik :: Pracownik", "description": "( char *Nazwa, float Pensja ) : Uposazenie ( Pensja ) { Nazwisko = new char[strlen(Nazwa) + 1] ; strcpy ( Nazwisko, Nazwa ) ; } Pracownik :: ~Pracownik ( ) { printf ( \n%s - Panu już dziękujemy.\n , Nazwisko ); delete Nazwisko ; } // Pracownik *Rob1 = new Pracownik( Wiśniewski , 1500 ); delete Rob1; // Wiśniewski - Panu już dziękujemy.", "width": "800" } 33 · tablice obiektów klas class Sruba { char *Gwint ; float Dlugosc ; public: Sruba ( char *Mxx, float Dlg = 0 ) : Dlugosc( Dlg ) { Gwint = new char [ strlen ( Mxx ) + 1 ] ; strcpy ( Gwint, Mxx ) ; } Sruba ( ) { } } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/33/%C2%B7+tablice+obiekt%C3%B3w+klas.jpg", "name": "· tablice obiektów klas", "description": "class Sruba. { char *Gwint ; float Dlugosc ; public: Sruba ( char *Mxx, float Dlg = 0 ) : Dlugosc( Dlg ) { Gwint = new char [ strlen ( Mxx ) + 1 ] ; strcpy ( Gwint, Mxx ) ; } Sruba ( ) { } } ;", "width": "800" } 34 Sruba TablicaSrub [ 10 ] ; // Sruba *WykazSrub = new Sruba [ 10 ] ; delete [ ] WykazSrub ; // Sruba Zestaw1 [ ] = { "M6", "M5", "M3", "M8" } ; // 4 elementy Sruba Zestaw2 [ 2 ] = { Sruba( "M4", 3.5 ), Sruba( "M8", 10 ) }; Sruba Zestaw3 [ 3 ] = { "M10", Sruba ( "M12", 12 ), Sruba ( "M22" ) } ; Podwyżka { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/34/Sruba+TablicaSrub+%5B+10+%5D+%3B+%2F%2F+Sruba+%2AWykazSrub+%3D+new+Sruba+%5B+10+%5D+%3B+delete+%5B+%5D+WykazSrub+%3B+%2F%2F.jpg", "name": "Sruba TablicaSrub [ 10 ] ; // Sruba *WykazSrub = new Sruba [ 10 ] ; delete [ ] WykazSrub ; //", "description": "Sruba Zestaw1 [ ] = { M6 , M5 , M3 , M8 } ; // 4 elementy. Sruba Zestaw2 [ 2 ] = { Sruba( M4 , 3.5 ), Sruba( M8 , 10 ) }; Sruba Zestaw3 [ 3 ] = { M10 , Sruba ( M12 , 12 ), Sruba ( M22 ) } ; Podwyżka.", "width": "800" } 35 · obiekty jako składowe innych obiektów class Kaseta { float Pojemnosc ; public: char *Producent ; float JakaPojemnosc ( ) { return Pojemnosc ; } } ; class Nagranie { Kaseta nosnik ; char *Film ; void Wyswietl ( ) { } } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/35/%C2%B7+obiekty+jako+sk%C5%82adowe+innych+obiekt%C3%B3w.jpg", "name": "· obiekty jako składowe innych obiektów", "description": "class Kaseta. { float Pojemnosc ; public: char *Producent ; float JakaPojemnosc ( ) { return Pojemnosc ; } } ; class Nagranie. { Kaseta nosnik ; char *Film ; void Wyswietl ( ) { ......... } } ;", "width": "800" } 36 // w funkcji Wyswietl dostępne składowe Pojemnosc Producent Film 120 // w funkcji Wyswietl dostępne składowe Producent i Film, składowa Pojemnosc jedynie przez funkcję JakaPojemnosc { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/36/%2F%2F+w+funkcji+Wyswietl+dost%C4%99pne+sk%C5%82adowe.jpg", "name": "// w funkcji Wyswietl dostępne składowe", "description": "Pojemnosc. Producent. Film. 120. // w funkcji Wyswietl dostępne składowe. Producent i Film, składowa Pojemnosc. jedynie przez funkcję JakaPojemnosc.", "width": "800" } 37 · wskaźnik this float Poj_1 = Kaseta_1.JakaPojemnosc(); float Poj_2 = Kaseta_2.JakaPojemnosc(); // wskaźnik obiektu aktualnego this float JakaPojemnosc ( ) { return this -> Pojemnosc ; } // nadmiarowe { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/37/%C2%B7+wska%C5%BAnik+this+float+Poj_1+%3D+Kaseta_1.JakaPojemnosc%28%29%3B+float+Poj_2+%3D+Kaseta_2.JakaPojemnosc%28%29%3B.jpg", "name": "· wskaźnik this float Poj_1 = Kaseta_1.JakaPojemnosc(); float Poj_2 = Kaseta_2.JakaPojemnosc();", "description": "// wskaźnik obiektu aktualnego this. float JakaPojemnosc ( ) { return this -> Pojemnosc ; } // nadmiarowe.", "width": "800" } 38 class Plansza { char Pola [ 16 ] [ 16 ] ; char Wiersz, Kolumna ; public: Plansza& UstalWiersz ( char ) ; Plansza& UstalKolumne ( char ) ; Plansza& UstalPole ( char ) ; }; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/38/class+Plansza+%7B+char+Pola+%5B+16+%5D+%5B+16+%5D+%3B+char+Wiersz%2C+Kolumna+%3B+public%3A+Plansza%26+UstalWiersz+%28+char+%29+%3B.jpg", "name": "class Plansza { char Pola [ 16 ] [ 16 ] ; char Wiersz, Kolumna ; public: Plansza& UstalWiersz ( char ) ;", "description": "Plansza& UstalKolumne ( char ) ; Plansza& UstalPole ( char ) ; };", "width": "800" } 39 Plansza& Plansza :: UstalWiersz ( char Numer ){ Wiersz = Numer ; return *this; } Plansza& Plansza :: UstalKolumne ( char Numer ) { Kolumna = Numer ; return *this; } Plansza& Plansza :: UstalPole ( char Zawartosc ) { Pola [ Wiersz ] [ Kolumna ] = Zawartosc ; return *this; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/39/Plansza%26+Plansza+%3A%3A+UstalWiersz+%28+char+Numer+%29.jpg", "name": "Plansza& Plansza :: UstalWiersz ( char Numer )", "description": "{ Wiersz = Numer ; return *this; } Plansza& Plansza :: UstalKolumne ( char Numer ) { Kolumna = Numer ; return *this; } Plansza& Plansza :: UstalPole ( char Zawartosc ) { Pola [ Wiersz ] [ Kolumna ] = Zawartosc ; return *this; }", "width": "800" } 40 Plansza Gra; Plansza *pGra = new Plansza ; Gra . UstalWiersz ( 10 ) UstalKolumnę ( 3 ) . UstalPole ( 'A' ); Gra . UstalPole ( 'K' ) UstalWiersz ( 7 ) . UstalKolumnę ( 0 ); pGra > UstalWiersz ( 15 ) UstalKolumnę ( 15 ) UstalPole ( 'J' ) ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/40/Plansza+Gra%3B+Plansza+%2ApGra+%3D+new+Plansza+%3B+Gra+.+UstalWiersz+%28+10+%29+.+UstalKolumn%C4%99+%28+3+%29+.+UstalPole+%28+A+%29%3B.jpg", "name": "Plansza Gra; Plansza *pGra = new Plansza ; Gra . UstalWiersz ( 10 ) . UstalKolumnę ( 3 ) . UstalPole ( A );", "description": "Gra . UstalPole ( K ) . UstalWiersz ( 7 ) . UstalKolumnę ( 0 ); pGra > UstalWiersz ( 15 ) . UstalKolumnę ( 15 ) . UstalPole ( J ) ;", "width": "800" } 41 · statyczne składowe klasclass Polaczenia { static int LicznikPolaczen ; char *Nadawca ; char *Odbiorca ; public: Polaczenia ( char*, char* ) ; ~Polaczenia ( ) ; static int LiczbaPolaczen ( ) { return LicznikPolaczen ; } } ; int Polaczenia :: LicznikPolaczen = 0 ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/41/%C2%B7+statyczne+sk%C5%82adowe+klas.jpg", "name": "· statyczne składowe klas", "description": "class Polaczenia. { static int LicznikPolaczen ; char *Nadawca ; char *Odbiorca ; public: Polaczenia ( char*, char* ) ; ~Polaczenia ( ) ; static int LiczbaPolaczen ( ) { return LicznikPolaczen ; } } ; int Polaczenia :: LicznikPolaczen = 0 ;", "width": "800" } 42 Polaczenia :: Polaczenia ( char *Nad, char *Odb){ // Nadawca, Odbiorca ++ LicznikPolaczen ; } Polaczenia :: ~Polaczenia ( ) { -- LicznikPolaczen ; int Zwiazki = Polaczenia :: LiczbaPolaczen ( ) ; // Związki == 0 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/42/Polaczenia+%3A%3A+Polaczenia+%28+char+%2ANad%2C+char+%2AOdb%29.jpg", "name": "Polaczenia :: Polaczenia ( char *Nad, char *Odb)", "description": "{ ............. // Nadawca, Odbiorca. ++ LicznikPolaczen ; } Polaczenia :: ~Polaczenia ( ) { -- LicznikPolaczen ; int Zwiazki = Polaczenia :: LiczbaPolaczen ( ) ; // Związki == 0.", "width": "800" } 43 Polaczenia Lacze1( "Gniezno", "Poznań" ) ; Połączenia *pLacze =Polaczenia Lacze1( "Gniezno", "Poznań" ) ; Połączenia *pLacze = new Polaczenia ( "Ełk", "Radom" ) ; // Zwiazki = Lacze1.LiczbaPolaczen ( ) // Związki == 2 Zwiazki = pLacze -> LiczbaPolaczen ( ) ; // Związki == 2 delete pLacze ; Zwiazki = Polaczenia :: LiczbaPolaczen( ); // Związki == 1 { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/43/Polaczenia+Lacze1%28+Gniezno+%2C+Pozna%C5%84+%29+%3B+Po%C5%82%C4%85czenia+%2ApLacze+%3D.jpg", "name": "Polaczenia Lacze1( Gniezno , Poznań ) ; Połączenia *pLacze =", "description": "Polaczenia Lacze1( Gniezno , Poznań ) ; Połączenia *pLacze = new Polaczenia ( Ełk , Radom ) ; // Zwiazki = Lacze1.LiczbaPolaczen ( ) // Związki == 2. Zwiazki = pLacze -> LiczbaPolaczen ( ) ; // Związki == 2. delete pLacze ; Zwiazki = Polaczenia :: LiczbaPolaczen( ); // Związki == 1.", "width": "800" } 44 · funkcje i klasy zaprzyjaźnioneclass Podatek { private: float Stopa ; float Podstawa ; float Ulgi ; public: friend void Zmiana ( Podatek&, float ) ; Podatek ( float, float, float ) ; } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/44/%C2%B7+funkcje+i+klasy+zaprzyja%C5%BAnione.jpg", "name": "· funkcje i klasy zaprzyjaźnione", "description": "class Podatek. { private: float Stopa ; float Podstawa ; float Ulgi ; public: friend void Zmiana ( Podatek&, float ) ; Podatek ( float, float, float ) ; } ;", "width": "800" } 45 Podatek :: Podatek ( float St, float Po, float Ul ) :Stopa( St ), Podstawa ( Po ), Ulgi ( Ul ) { } ; void Zmiana ( Podatek& podatek, float St ) { podatek . Stopa = St ; } // zaprzyjaźnionej wolno { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/45/Podatek+%3A%3A+Podatek+%28+float+St%2C+float+Po%2C+float+Ul+%29+%3A.jpg", "name": "Podatek :: Podatek ( float St, float Po, float Ul ) :", "description": "Stopa( St ), Podstawa ( Po ), Ulgi ( Ul ) { } ; void Zmiana ( Podatek& podatek, float St ) { podatek . Stopa = St ; } // zaprzyjaźnionej wolno.", "width": "800" } 46 class Alfa { int Zmiana(Otwarta&); float Inna(Otwarta&); ..... }; class Beta { double Mod_1(Otwarta&); char Mod_2(Otwarta&); class Otwarta { friend int Alfa::Zmiana(Otwarta&); friend class Beta; ...... } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/46/class+Alfa+%7B+int+Zmiana%28Otwarta%26%29%3B+float+Inna%28Otwarta%26%29%3B+.....+%7D%3B+class+Beta.+%7B+double+Mod_1%28Otwarta%26%29%3B.jpg", "name": "class Alfa { int Zmiana(Otwarta&); float Inna(Otwarta&); ..... }; class Beta. { double Mod_1(Otwarta&);", "description": "char Mod_2(Otwarta&); class Otwarta. { friend int Alfa::Zmiana(Otwarta&); friend class Beta; ...... }", "width": "800" } 47 · konwersja obiektów – operatory konwersji operator typ ( ) { blok } (typ : nazwa typu podstawowego lub nazwa klasy) – konstruktor jako operator konwersji { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/47/%C2%B7+konwersja+obiekt%C3%B3w+%E2%80%93+operatory+konwersji.+operator+typ+%28+%29+%7B+blok+%7D+%28typ+%3A+nazwa+typu+podstawowego+lub+nazwa+klasy%29.jpg", "name": "· konwersja obiektów – operatory konwersji. operator typ ( ) { blok } (typ : nazwa typu podstawowego lub nazwa klasy)", "description": "– konstruktor jako operator konwersji.", "width": "800" } 48 class Odcinek // operator{ public: int Poczatek, Koniec; Odcinek (int x, int y): Poczatek(x), Koniec(y) { } operator int ( ) { return Koniec - Poczatek; } }; Odcinek o1(5, 12); int dd; dd = (int)o1; dd = o1 + 5; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/48/class+Odcinek+%2F%2F+operator.jpg", "name": "class Odcinek // operator", "description": "{ public: int Poczatek, Koniec; Odcinek (int x, int y): Poczatek(x), Koniec(y) { } operator int ( ) { return Koniec - Poczatek; } }; Odcinek o1(5, 12); int dd; dd = (int)o1; dd = o1 + 5;", "width": "800" } 49 class Okrag // konstruktor{ public: Punkt Centrum; // X, Y double Promien; Okrag ( Punkt pp) Centrum = pp; Promien = 1.0; } }; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/49/class+Okrag+%2F%2F+konstruktor.jpg", "name": "class Okrag // konstruktor", "description": "{ public: Punkt Centrum; // X, Y. double Promien; Okrag ( Punkt pp) Centrum = pp; Promien = 1.0; } };", "width": "800" } 50 bool JestPonizejX (Okrag a) { return a.Centrum.X < 0; } Punkt P1( 1.3, 5.6 ), P2( -4.8, 2.9 ); bool k = JestPonizejX ( P1 ), l = JestPonizejX ( (Okrąg) P2 ); { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/50/bool+JestPonizejX+%28Okrag+a%29+%7B+return+a.Centrum.X+%3C+0%3B+%7D+Punkt+P1%28+1.3%2C+5.6+%29%2C+P2%28+-4.8%2C+2.9+%29%3B.jpg", "name": "bool JestPonizejX (Okrag a) { return a.Centrum.X < 0; } Punkt P1( 1.3, 5.6 ), P2( -4.8, 2.9 );", "description": "bool k = JestPonizejX ( P1 ), l = JestPonizejX ( (Okrąg) P2 );", "width": "800" } 51 · przeciążanie operatorówObiekt1 . Rowny ( Obiekt2 ) Obiekt1 == Obiekt2 E7 – operatory istniejące w C++ ( poza kilkoma ) – jeden z argumentów obiekt klasy – zachowuje arność i priorytet { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/51/%C2%B7+przeci%C4%85%C5%BCanie+operator%C3%B3w.jpg", "name": "· przeciążanie operatorów", "description": "Obiekt1 . Rowny ( Obiekt2 ) Obiekt1 == Obiekt2. 1 + 2. 1.5 + 2.5E7. – operatory istniejące w C++ ( poza kilkoma ) – jeden z argumentów obiekt klasy. – zachowuje arność i priorytet.", "width": "800" } 52 class Beczka { char *Plyn ; float Pojemnosc, Zapas ; public: Beczka (char*, float, float ) ; friend float operator - (Beczka&, float ) ; float operator + ( float Dolano ) { return Zapas += Dolano ; } // this -> Zapas } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/52/class+Beczka+%7B+char+%2APlyn+%3B+float+Pojemnosc%2C+Zapas+%3B+public%3A+Beczka+%28char%2A%2C+float%2C+float+%29+%3B.jpg", "name": "class Beczka { char *Plyn ; float Pojemnosc, Zapas ; public: Beczka (char*, float, float ) ;", "description": "friend float operator - (Beczka&, float ) ; float operator + ( float Dolano ) { return Zapas += Dolano ; } // this -> Zapas. } ;", "width": "800" } 53 float operator - ( Beczka& beczka, float Pobrano ){ return beczka . Zapas -= Pobrano ; } Beczka beczka1543 ( "ocet", 150, 150 ) ; float Pozostalo = beczka , NowaIlosc = beczka ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/53/float+operator+-+%28+Beczka%26+beczka%2C+float+Pobrano+%29.jpg", "name": "float operator - ( Beczka& beczka, float Pobrano )", "description": "{ return beczka . Zapas -= Pobrano ; } Beczka beczka1543 ( ocet , 150, 150 ) ; float Pozostalo = beczka1543 - 12.4 , NowaIlosc = beczka1543 + 5.3 ;", "width": "800" } 54 – operatory unarne i binarne– operatory = i [ ] class Strona { int Numer ; char *Tekst ; public: Strona& operator = ( Strona ) ; char operator [ ] ( int NrZnaku ) { return Tekst [ NrZnaku ] ; } int DajNumer( ) { return Numer; } } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/54/%E2%80%93+operatory+unarne+i+binarne.jpg", "name": "– operatory unarne i binarne", "description": "– operatory = i [ ] class Strona. { int Numer ; char *Tekst ; public: Strona& operator = ( Strona ) ; char operator [ ] ( int NrZnaku ) { return Tekst [ NrZnaku ] ; } int DajNumer( ) { return Numer; } } ;", "width": "800" } 55 Strona& Strona::operator = ( Strona org ){ Numer = org . Numer ; Tekst = new char [ strlen ( org . Tekst ) + 1 ] ; strcpy ( Tekst, org . Tekst ) ; return *this ; } // Kopia_Strony = Strona_Oryginalna ; // this org { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/55/Strona%26+Strona%3A%3Aoperator+%3D+%28+Strona+org+%29.jpg", "name": "Strona& Strona::operator = ( Strona org )", "description": "{ Numer = org . Numer + 1000 ; Tekst = new char [ strlen ( org . Tekst ) + 1 ] ; strcpy ( Tekst, org . Tekst ) ; return *this ; } // Kopia_Strony = Strona_Oryginalna ; // this org.", "width": "800" } 56 Strona Aktualna ( 15, "Rozdział 3" ) ;Strona Pomocnicza ( 0, " " ) ; int NumerKopii; Pomocnicza = Aktualna; NumerKopii = Pomocnicza . DajNumer ( ) ; // 1015 Strona Robocza ( 234, "Zakończenie" ) ; char ZnakWybrany = Robocza [ 4 ] ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/56/Strona+Aktualna+%28+15%2C+Rozdzia%C5%82+3+%29+%3B.jpg", "name": "Strona Aktualna ( 15, Rozdział 3 ) ;", "description": "Strona Pomocnicza ( 0, ) ; int NumerKopii; Pomocnicza = Aktualna; NumerKopii = Pomocnicza . DajNumer ( ) ; // 1015. Strona Robocza ( 234, Zakończenie ) ; char ZnakWybrany = Robocza [ 4 ] ;", "width": "800" } 57 · wprowadzanie i wyprowadzanie danych– klawiatura i monitor iostream cin // strumień wejściowy (klawiatura) cout // strumień wyjściowy (monitor) cerr // strumień diagnostyczny (monitor) #include using namespace std; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/57/%C2%B7+wprowadzanie+i+wyprowadzanie+danych.jpg", "name": "· wprowadzanie i wyprowadzanie danych", "description": "– klawiatura i monitor iostream. cin // strumień wejściowy (klawiatura) cout // strumień wyjściowy (monitor) cerr // strumień diagnostyczny (monitor) #include using namespace std;", "width": "800" } 58 char Znak ; int Srednia ; float MaloDokladna ; double Dokladna ; char *Tekst = new char [ 32 ] ; // cin >> Znak ; cin >> Srednia >> MaloDokladna >> Dokladna >> Tekst ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/58/char+Znak+%3B+int+Srednia+%3B+float+MaloDokladna+%3B+double+Dokladna+%3B+char+%2ATekst+%3D+new+char+%5B+32+%5D+%3B.jpg", "name": "char Znak ; int Srednia ; float MaloDokladna ; double Dokladna ; char *Tekst = new char [ 32 ] ;", "description": "// cin >> Znak ; cin >> Srednia >> MaloDokladna >> Dokladna >> Tekst ;", "width": "800" } 59 int LiczbaKomorek ; float SredniaKomorka ; char Napis[20] = "Koniec programu."; // cout << "\n Liczba komórek : " << LiczbaKomorek ; cout << "\n Wielkość średniej komórki : " << SredniaKomorka ; cout << Napis << endl; // iomanip.h OperOd { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/59/int+LiczbaKomorek+%3B+float+SredniaKomorka+%3B+char+Napis%5B20%5D+%3D+Koniec+programu.+%3B+%2F%2F.jpg", "name": "int LiczbaKomorek ; float SredniaKomorka ; char Napis[20] = Koniec programu. ; //", "description": "cout > (istream&, Buty&); friend ostream& operator > (istream&, Buty&); friend ostream& operator > ( istream& klawiatura, Buty& buty )" class="image_link uk-text-large uk-margin-small-left uk-margin-small-right"> 61 istream& operator >> ( istream& klawiatura, Buty& buty ){ cout << "\nRozmiar butów : " ; klawiatura >> buty . Rozmiar ; cout << "\nProponowana cena : " ; klawiatura >> buty . Cena ; cout << "\nKolor butów : " ; klawiatura >> buty . Kolor ; return klawiatura ; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/61/istream%26+operator+%3E%3E+%28+istream%26+klawiatura%2C+Buty%26+buty+%29.jpg", "name": "istream& operator >> ( istream& klawiatura, Buty& buty )", "description": "{ cout > buty . Rozmiar ; cout > buty . Cena ; cout > buty . Kolor ; return klawiatura ; }", "width": "800" } 62 ostream& operator << ( ostream& monitor, Buty buty ){ monitor << "\nRozmiar butów : " ; monitor << buty . Rozmiar << endl ; monitor << "Proponowana cena : " ; monitor << buty . Cena << endl ; monitor << "Kolor butów : " ; monitor << buty . Kolor << endl ; return monitor ; } Buty Pantofle231 ; cin >> Pantofle231; cout << Pantofle231; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/62/ostream%26+operator+%3C%3C+%28+ostream%26+monitor%2C+Buty+buty+%29.jpg", "name": "ostream& operator > Bufor >> Liczba >> Dana ; PlikWe1 . close( ); // ifstream archiwum ; archiwum . open( ArchiwumPodstawowe.doc , ios::in | ios::nocreate ) ;", "width": "800" } 65 Flaga ios::app Dopisuj dane na końcu pliku ios::ateZnaczenie ios::app Dopisuj dane na końcu pliku ios::ate Przesuń wskaźnik na koniec pliku ios::in Otwarcie do odczytu ios::out Otwarcie do zapisu ios::binary Otwarcie w trybie binarnym ios::trunc Zapisuj na dotychczasową zawartość pliku ios::nocreate Nie twórz, jeżeli plik nie istnieje ios::noreplace Nie otwieraj, jeżeli plik już istnieje, chyba, że zadano ate lub app { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/65/Flaga+ios%3A%3Aapp+Dopisuj+dane+na+ko%C5%84cu+pliku+ios%3A%3Aate.jpg", "name": "Flaga ios::app Dopisuj dane na końcu pliku ios::ate", "description": "Znaczenie. ios::app. Dopisuj dane na końcu pliku. ios::ate. Przesuń wskaźnik na koniec pliku. ios::in. Otwarcie do odczytu. ios::out. Otwarcie do zapisu. ios::binary. Otwarcie w trybie binarnym. ios::trunc. Zapisuj na dotychczasową zawartość pliku. ios::nocreate. Nie twórz, jeżeli plik nie istnieje. ios::noreplace. Nie otwieraj, jeżeli plik już istnieje, chyba, że zadano ate lub app.", "width": "800" } 66 – dla obiektów klas class Buty { int Rozmiar ; float Cena ; char Kolor [ 32 ] ; public: friend ifstream& operator >> (ifstream&, Buty&); friend ofstream& operator << (ofstream&, Buty); } ; { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/66/%E2%80%93+dla+obiekt%C3%B3w+klas+class+Buty.+%7B+int+Rozmiar+%3B+float+Cena+%3B+char+Kolor+%5B+32+%5D+%3B+public%3A.jpg", "name": "– dla obiektów klas class Buty. { int Rozmiar ; float Cena ; char Kolor [ 32 ] ; public:", "description": "friend ifstream& operator >> (ifstream&, Buty&); friend ofstream& operator > (ifstream&, Buty&); friend ofstream& operator > ( ifstream& plikwe, Buty& buty )" class="image_link uk-text-large uk-margin-small-left uk-margin-small-right"> 67 ifstream& operator >> ( ifstream& plikwe, Buty& buty ){ plikwe >> buty . Rozmiar ; plikwe >> buty . Cena ; plikwe >> buty . Kolor ; return plikwe ; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/67/ifstream%26+operator+%3E%3E+%28+ifstream%26+plikwe%2C+Buty%26+buty+%29.jpg", "name": "ifstream& operator >> ( ifstream& plikwe, Buty& buty )", "description": "{ plikwe >> buty . Rozmiar ; plikwe >> buty . Cena ; plikwe >> buty . Kolor ; return plikwe ; }", "width": "800" } 68 ofstream& operator << ( ofstream& plikwy, Buty buty ){ plikwy << buty . Rozmiar << ' '; plikwy << buty . Cena << ' ' ; plikwy << buty . Kolor << ' '; plikwy << endl ; return plikwy ; } { "@context": "http://schema.org", "@type": "ImageObject", "contentUrl": "http://slideplayer.pl/414058/1/images/68/ofstream%26+operator+%3C%3C+%28+ofstream%26+plikwy%2C+Buty+buty+%29.jpg", "name": "ofstream& operator > Nowe;", "description": "Magazyn >> Inne >> Ladne; Magazyn.Close();", "width": "800" } 70 Magazyn . open ("MagazynButow.txt", ios::out);ofstream Magazyn; Magazyn . open ("MagazynButow.txt", ios::out); Buty Nowe, Inne, Ladne; // Magazyn << Nowe; Magazyn << Inne << Ladne; Magazyn.Close(); UseCir ,Telewizor
23 · stosowanie konstruktorów i destruktorów– konstruktor tworzenie obiektu – destruktor usuwanie obiektu · wywoływane automatycznie
24 #include class Ulica { private: char *Nazwa ; float Dlugosc ; public: // konstruktor Ulica ( char *Tekst, float Kilometry ) { Nazwa = new char[strlen ( Tekst ) + 1]; strcpy (Nazwa, Tekst ) ; Dlugosc = Kilometry ; } } ; Ulica Droga1 = Ulica ( "Polna", 3.8 ) ; Ulica Droga2 ( "Rolna", 4.2 ) ; Ulica *pDroga3 = new Ulica ( "Mylna", 2.5 ) ; Ulica Droga4 = { "Dolna", 1.1 } ; // błąd, składowe prywatne
25 #include class Most { float Dlugosc ; char Rzeka [ 32 ], Typ [ 16 ] ; public: Most (float, char*, char* = "przeslowy" ) ; } ; Most :: Most ( float Kilometry, char* Woda = "Warta", char* Rodzaj ) { Długosc = Kilometry ; strcpy ( Rzeka, Woda ) ; strcpy ( Typ, Rodzaj ) ; }
26 Most Elzbiety( 1.2, "Dunaj", "wiszący" ) ;Most Poniatowskiego ( 1.8, "Wisła" ) ; Most Rocha ( 0.8 ) ; · konstruktor domyślny class Punkt { public: float Rzedna, Odcieta ; } ; Punkt ( ) { } // domyślny Odcinek_1
27 · lista powiązań class Trojkat { private: int BokA, BokB, BokC ; public: Trojkat ( int, int, int ) ; } ; Trojkat :: Trojkat( int A, int B, int C ): BokA ( A ), BokB ( B ) { BokC = C ; } Trojkat Triak1 ( 3, 12, 8 ) ;
28 · konstruktory przeciążone#include class Tekst { int Dlugosc ; char* Napis ; public: Tekst ( int ) ; // konstruktor I Tekst ( char* ); // konstruktor II Tekst ( ) // konstruktor III { Dlugosc = 0 ; Napis = NULL ; } } ;
29 Tekst ::Tekst ( int Znaki ) :Dlugosc ( Znaki ) { char* Pomoc = new char [ Znaki ] ; Napis = Pomoc ; for ( int Kolejny = 1 ; Kolejny < Znaki ; ++Kolejny ) *Pomoc++ = 'x' ; *Pomoc = 0 ; } // Tekst :: Tekst ( char *Tek ) { Dlugosc = strlen ( Tek ) ; Napis = new char[ Dlugosc + 1 ] ; strcpy ( Napis, Tek ) ;
30 Tekst Proza1 ( 17 ) ; // konstruktor ITekst Proza2 ( "samochód osobowy" ) ; // konstruktor II Tekst Proza3 ; // konstruktor III Tekst Proza4 = Tekst ( ) ; // konstruktor III Tekst Proza5 ( ) ; // błąd - // deklaracja funkcji bezargumentowej // o wyniku typu Tekst Tekst *pProza6 = new Tekst ( 12.7 ) ; // konstruktor I po // standardowej konwersji argumentu Odcinek_2
31 · destruktor class Pracownik { char *Nazwisko ; float Uposazenie ; public: Pracownik ( char*, float ) ; // konstruktor ~Pracownik ( ) ; // destruktor } ;
32 Pracownik :: Pracownik( char *Nazwa, float Pensja ) : Uposazenie ( Pensja ) { Nazwisko = new char[strlen(Nazwa) + 1] ; strcpy ( Nazwisko, Nazwa ) ; } Pracownik :: ~Pracownik ( ) { printf ("\n%s - Panu już dziękujemy.\n", Nazwisko ); delete Nazwisko ; } // Pracownik *Rob1 = new Pracownik( "Wiśniewski", 1500 ); delete Rob1; // Wiśniewski - Panu już dziękujemy.
33 · tablice obiektów klas class Sruba { char *Gwint ; float Dlugosc ; public: Sruba ( char *Mxx, float Dlg = 0 ) : Dlugosc( Dlg ) { Gwint = new char [ strlen ( Mxx ) + 1 ] ; strcpy ( Gwint, Mxx ) ; } Sruba ( ) { } } ;
34 Sruba TablicaSrub [ 10 ] ; // Sruba *WykazSrub = new Sruba [ 10 ] ; delete [ ] WykazSrub ; // Sruba Zestaw1 [ ] = { "M6", "M5", "M3", "M8" } ; // 4 elementy Sruba Zestaw2 [ 2 ] = { Sruba( "M4", 3.5 ), Sruba( "M8", 10 ) }; Sruba Zestaw3 [ 3 ] = { "M10", Sruba ( "M12", 12 ), Sruba ( "M22" ) } ; Podwyżka
35 · obiekty jako składowe innych obiektów class Kaseta { float Pojemnosc ; public: char *Producent ; float JakaPojemnosc ( ) { return Pojemnosc ; } } ; class Nagranie { Kaseta nosnik ; char *Film ; void Wyswietl ( ) { } } ;
36 // w funkcji Wyswietl dostępne składowe Pojemnosc Producent Film 120 // w funkcji Wyswietl dostępne składowe Producent i Film, składowa Pojemnosc jedynie przez funkcję JakaPojemnosc
37 · wskaźnik this float Poj_1 = Kaseta_1.JakaPojemnosc(); float Poj_2 = Kaseta_2.JakaPojemnosc(); // wskaźnik obiektu aktualnego this float JakaPojemnosc ( ) { return this -> Pojemnosc ; } // nadmiarowe
38 class Plansza { char Pola [ 16 ] [ 16 ] ; char Wiersz, Kolumna ; public: Plansza& UstalWiersz ( char ) ; Plansza& UstalKolumne ( char ) ; Plansza& UstalPole ( char ) ; };
39 Plansza& Plansza :: UstalWiersz ( char Numer ){ Wiersz = Numer ; return *this; } Plansza& Plansza :: UstalKolumne ( char Numer ) { Kolumna = Numer ; return *this; } Plansza& Plansza :: UstalPole ( char Zawartosc ) { Pola [ Wiersz ] [ Kolumna ] = Zawartosc ; return *this; }
40 Plansza Gra; Plansza *pGra = new Plansza ; Gra . UstalWiersz ( 10 ) UstalKolumnę ( 3 ) . UstalPole ( 'A' ); Gra . UstalPole ( 'K' ) UstalWiersz ( 7 ) . UstalKolumnę ( 0 ); pGra > UstalWiersz ( 15 ) UstalKolumnę ( 15 ) UstalPole ( 'J' ) ;
41 · statyczne składowe klasclass Polaczenia { static int LicznikPolaczen ; char *Nadawca ; char *Odbiorca ; public: Polaczenia ( char*, char* ) ; ~Polaczenia ( ) ; static int LiczbaPolaczen ( ) { return LicznikPolaczen ; } } ; int Polaczenia :: LicznikPolaczen = 0 ;
42 Polaczenia :: Polaczenia ( char *Nad, char *Odb){ // Nadawca, Odbiorca ++ LicznikPolaczen ; } Polaczenia :: ~Polaczenia ( ) { -- LicznikPolaczen ; int Zwiazki = Polaczenia :: LiczbaPolaczen ( ) ; // Związki == 0
43 Polaczenia Lacze1( "Gniezno", "Poznań" ) ; Połączenia *pLacze =Polaczenia Lacze1( "Gniezno", "Poznań" ) ; Połączenia *pLacze = new Polaczenia ( "Ełk", "Radom" ) ; // Zwiazki = Lacze1.LiczbaPolaczen ( ) // Związki == 2 Zwiazki = pLacze -> LiczbaPolaczen ( ) ; // Związki == 2 delete pLacze ; Zwiazki = Polaczenia :: LiczbaPolaczen( ); // Związki == 1
44 · funkcje i klasy zaprzyjaźnioneclass Podatek { private: float Stopa ; float Podstawa ; float Ulgi ; public: friend void Zmiana ( Podatek&, float ) ; Podatek ( float, float, float ) ; } ;
45 Podatek :: Podatek ( float St, float Po, float Ul ) :Stopa( St ), Podstawa ( Po ), Ulgi ( Ul ) { } ; void Zmiana ( Podatek& podatek, float St ) { podatek . Stopa = St ; } // zaprzyjaźnionej wolno
46 class Alfa { int Zmiana(Otwarta&); float Inna(Otwarta&); ..... }; class Beta { double Mod_1(Otwarta&); char Mod_2(Otwarta&); class Otwarta { friend int Alfa::Zmiana(Otwarta&); friend class Beta; ...... }
47 · konwersja obiektów – operatory konwersji operator typ ( ) { blok } (typ : nazwa typu podstawowego lub nazwa klasy) – konstruktor jako operator konwersji
48 class Odcinek // operator{ public: int Poczatek, Koniec; Odcinek (int x, int y): Poczatek(x), Koniec(y) { } operator int ( ) { return Koniec - Poczatek; } }; Odcinek o1(5, 12); int dd; dd = (int)o1; dd = o1 + 5;
49 class Okrag // konstruktor{ public: Punkt Centrum; // X, Y double Promien; Okrag ( Punkt pp) Centrum = pp; Promien = 1.0; } };
50 bool JestPonizejX (Okrag a) { return a.Centrum.X < 0; } Punkt P1( 1.3, 5.6 ), P2( -4.8, 2.9 ); bool k = JestPonizejX ( P1 ), l = JestPonizejX ( (Okrąg) P2 );
51 · przeciążanie operatorówObiekt1 . Rowny ( Obiekt2 ) Obiekt1 == Obiekt2 E7 – operatory istniejące w C++ ( poza kilkoma ) – jeden z argumentów obiekt klasy – zachowuje arność i priorytet
52 class Beczka { char *Plyn ; float Pojemnosc, Zapas ; public: Beczka (char*, float, float ) ; friend float operator - (Beczka&, float ) ; float operator + ( float Dolano ) { return Zapas += Dolano ; } // this -> Zapas } ;
53 float operator - ( Beczka& beczka, float Pobrano ){ return beczka . Zapas -= Pobrano ; } Beczka beczka1543 ( "ocet", 150, 150 ) ; float Pozostalo = beczka , NowaIlosc = beczka ;
54 – operatory unarne i binarne– operatory = i [ ] class Strona { int Numer ; char *Tekst ; public: Strona& operator = ( Strona ) ; char operator [ ] ( int NrZnaku ) { return Tekst [ NrZnaku ] ; } int DajNumer( ) { return Numer; } } ;
55 Strona& Strona::operator = ( Strona org ){ Numer = org . Numer ; Tekst = new char [ strlen ( org . Tekst ) + 1 ] ; strcpy ( Tekst, org . Tekst ) ; return *this ; } // Kopia_Strony = Strona_Oryginalna ; // this org
56 Strona Aktualna ( 15, "Rozdział 3" ) ;Strona Pomocnicza ( 0, " " ) ; int NumerKopii; Pomocnicza = Aktualna; NumerKopii = Pomocnicza . DajNumer ( ) ; // 1015 Strona Robocza ( 234, "Zakończenie" ) ; char ZnakWybrany = Robocza [ 4 ] ;
57 · wprowadzanie i wyprowadzanie danych– klawiatura i monitor iostream cin // strumień wejściowy (klawiatura) cout // strumień wyjściowy (monitor) cerr // strumień diagnostyczny (monitor) #include using namespace std;
58 char Znak ; int Srednia ; float MaloDokladna ; double Dokladna ; char *Tekst = new char [ 32 ] ; // cin >> Znak ; cin >> Srednia >> MaloDokladna >> Dokladna >> Tekst ;
59 int LiczbaKomorek ; float SredniaKomorka ; char Napis[20] = "Koniec programu."; // cout << "\n Liczba komórek : " << LiczbaKomorek ; cout << "\n Wielkość średniej komórki : " << SredniaKomorka ; cout << Napis << endl; // iomanip.h OperOd
60 – dla obiektów klas class Buty { int Rozmiar ; float Cena ; char Kolor [ 32 ] ; public: friend istream& operator >> (istream&, Buty&); friend ostream& operator << (ostream&, Buty); } ;
61 istream& operator >> ( istream& klawiatura, Buty& buty ){ cout << "\nRozmiar butów : " ; klawiatura >> buty . Rozmiar ; cout << "\nProponowana cena : " ; klawiatura >> buty . Cena ; cout << "\nKolor butów : " ; klawiatura >> buty . Kolor ; return klawiatura ; }
62 ostream& operator << ( ostream& monitor, Buty buty ){ monitor << "\nRozmiar butów : " ; monitor << buty . Rozmiar << endl ; monitor << "Proponowana cena : " ; monitor << buty . Cena << endl ; monitor << "Kolor butów : " ; monitor << buty . Kolor << endl ; return monitor ; } Buty Pantofle231 ; cin >> Pantofle231; cout << Pantofle231;
63 – pliki dyskowe fstream#include using namespace std; char *Tekst = "Aktualna wiadomość" ; double P = ; ofstream PlikPierwszy("plik1.txt") ; ofstream PlikDrugi ; PlikDrugi . open("plik2.txt", ios::out ) ; PlikPierwszy << Tekst << '\t' << P << endl; PlikDrugi << P << " " << Tekst << "\n"; PlikPierwszy . close ( ) ; PlikDrugi . close ( ) ;
64 char *Bufor[128]; int Liczba; double Dana; ifstream PlikWe1; PlikWe1.open( "Dane.txt", ios::in ); PlikWe1 >> Bufor >> Liczba >> Dana ; PlikWe1 . close( ); // ifstream archiwum ; archiwum . open( "ArchiwumPodstawowe.doc", ios::in | ios::nocreate ) ;
65 Flaga ios::app Dopisuj dane na końcu pliku ios::ateZnaczenie ios::app Dopisuj dane na końcu pliku ios::ate Przesuń wskaźnik na koniec pliku ios::in Otwarcie do odczytu ios::out Otwarcie do zapisu ios::binary Otwarcie w trybie binarnym ios::trunc Zapisuj na dotychczasową zawartość pliku ios::nocreate Nie twórz, jeżeli plik nie istnieje ios::noreplace Nie otwieraj, jeżeli plik już istnieje, chyba, że zadano ate lub app
66 – dla obiektów klas class Buty { int Rozmiar ; float Cena ; char Kolor [ 32 ] ; public: friend ifstream& operator >> (ifstream&, Buty&); friend ofstream& operator << (ofstream&, Buty); } ;
67 ifstream& operator >> ( ifstream& plikwe, Buty& buty ){ plikwe >> buty . Rozmiar ; plikwe >> buty . Cena ; plikwe >> buty . Kolor ; return plikwe ; }
68 ofstream& operator << ( ofstream& plikwy, Buty buty ){ plikwy << buty . Rozmiar << ' '; plikwy << buty . Cena << ' ' ; plikwy << buty . Kolor << ' '; plikwy << endl ; return plikwy ; }
69 ifstream Magazyn; Magazyn . open ("MagazynButow.txt", ios::in); Buty Nowe, Inne, Ladne; Magazyn >> Nowe; Magazyn >> Inne >> Ladne; Magazyn.Close();
70 Magazyn . open ("MagazynButow.txt", ios::out);ofstream Magazyn; Magazyn . open ("MagazynButow.txt", ios::out); Buty Nowe, Inne, Ladne; // Magazyn << Nowe; Magazyn << Inne << Ladne; Magazyn.Close(); UseCir ,Telewizor