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

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

Do czego służą klasy?

Do czego służą klasy?

KLASY cz4. Dorota Pylak. destruktory składowe statyczne przeciążanie operatorów. wskaźniki

KLASY cz.1. Dorota Pylak

Programowanie obiektowe

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

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

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

Wstęp do Programowania 2

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

Część 4 życie programu

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

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

TEMAT : KLASY DZIEDZICZENIE

I - Microsoft Visual Studio C++

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

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

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

Projektowanie klas c.d. Projektowanie klas przykład

Wprowadzenie do programowania i programowanie obiektowe

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

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

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

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

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

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

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

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

Egzamin z Podstaw informatyki i programowania 2007/2008

Laboratorium 1 - Programowanie proceduralne i obiektowe

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

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

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

Podstawy Programowania Obiektowego

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

Podstawy Programowania Obiektowego

Zadania z podstaw programowania obiektowego

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

PARADYGMATY PROGRAMOWANIA Wykład 2

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Programowanie obiektowe

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

PARADYGMATY PROGRAMOWANIA Wykład 3

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

Język C++ zajęcia nr 2

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

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

Wykład 8: klasy cz. 4

dr inż. Jarosław Forenc

Mechanizm dziedziczenia

Aplikacje w środowisku Java

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

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

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

Rozdział 4 KLASY, OBIEKTY, METODY

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

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

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Programowanie obiektowe w C++ Wykład 12

Konstruktor kopiujacy

Mechanizm dziedziczenia

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

Wykład 4: Klasy i Metody

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Wstęp do programowania obiektowego. Wykład 2

Zofia Kruczkiewicz, ETE8305_2 1

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

Programowanie obiektowe i C++ dla matematyków

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

Wprowadzenie do szablonów szablony funkcji

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

C++ Przeładowanie operatorów i wzorce w klasach

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Wprowadzenie do szablonów szablony funkcji

Metody Metody, parametry, zwracanie wartości

Definiowanie własnych klas

Programowanie obiektowe i C++ dla matematyków

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

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

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

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

Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h

Operatory na rzecz typu TString

string Rodzaj[4]= {"TV ", "wieza ", "DVD ", "kino "}; string Producent[4]={"Phillips", "Sony ", "Sanyo ", "Samsung "};

Wykład :37 PP2_W9

Szablony funkcji i szablony klas

Programowanie obiektowe

TEMAT : KLASY POLIMORFIZM

Dokumentacja do API Javy.

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Deklaracja struktury w C++

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

Transkrypt:

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 robi nic) konstruktor ustalający pola prywatne klasy na podstawie jego parametrów metoda Ustaw ustalająca pola prywatne klasy zgodnie z wartościami jej parametrów oraz metody zwracające wartości poszczególnych pól metoda Wyswietl wyświetlająca na ekranie dane osobowe ucznia metoda logiczna Lepszy, porównująca średnią ucznia na którym wykonujemy metodę ze średnią drugiego ucznia przekazanego jako parametr do funkcji. Zwraca wartość true, gdy obiekt na rzecz którego jest wykonana metoda ma lepszą średnią metoda logiczna Promowany określająca na podstawie średniej czy uczeń jest promowany do następnej klasy. Napisz implementację powyższych metod.

KLASA UCZEN W ubiegłym tygodniu klasę definiowaliśmy w osobnym pliku 1)File->New->Other-> Console wizard plik główny zawierający funkcję main() 2)File->New->Unit plik w którym zapisywana jest klasa. Nadaliśmy mu nazwę taką jak klasa która jest w nim zapisana np. punkt.cpp 3) Unit składa się z dwóch plików: -punkt.h w którym zapisujemy deklaracje klasy tj. pola i nagłówki metod -punkt.cpp w którym definiujemy metody klasy Punkt, poprzedzając je nazawą klasy z operatorem zasięgu 4) Zarówno w piku punkt.cpp jak i pliku zawierającym f-cję main musieliśmy napisać #include punkt.h W tym tygodniu deklarację klasy oraz definicje jej metod umieścimy tak jak kiedyś struktury w tym samym pliku w którym znajduje się funkcja main(). Otwórzmy więc File->New->Other-> Console wizard. Zapiszmy plik jako Uczen.cpp, a projekt jako UczenProj.bpr

KLASA UCZEN Schemat naszego pliku #include<iostream> using namespace std; class Klasa private: //deklaracja pól i ewentualnych metod prywatnych: //Typ nazwa_pola public: //deklaracja lub definicja metod publicznych klasy i konstruktorów //definicje konstruktorów i metod np. konstruktor //bezparametrowy, który nie robi nic Klasa:: Klasa() ; int main()

KLASA UCZEN Zaczynamy zatem pisać deklarację naszej klasy Uczen. Określmy pola klasy #include<iostream> #include<string> using namespace std; //deklaracja klasy class Uczen private: //pola klasy opisują dane, które zawarte będą w każdym //obiekcie klasy string imie; string nazwisko; float srednia; public: ;

Klasa Uczen - metody Metody definiują zbiór operacji, jakie na tych danych będzie można wykonywać. Deklaracja metody ma postać deklaracji funkcji, tyle że zawarta jest wewnątrz definicji klasy. Tak jak dla zwykłych funkcji, deklaracja może być połączona z definicją. Można też, z podobnym skutkiem, wewnątrz klasy tylko metodę zadeklarować, a zdefiniować ją już poza klasą, w definicji odwołując się do niej poprzez nazwę kwalifikowaną operatorem zakresu klasy (np. Klasa::), bo przecież mogłoby istnieć wiele niezwiązanych ze sobą metod o tej samej nazwie w różnych klasach. Jeśli funkcja (metoda, funkcja statyczna, konstruktor, destruktor) jest definiowana wewnątrz klasy, to domyślnie przyjmuje się dla niej modyfikator inline. Tak więc, jeśli metodę definiujemy wewnątrz klasy, to kompilator będzie próbował ją rozwijać.

Klasa Uczen Konstruktor w programowaniu obiektowym to specjalna metoda o nazwie zgodnej z nazwą klasy, wywoływana podczas tworzenia jej instancji (obiektów tej klasy). Dodajmy do naszej klasy konstruktory: public: //konstruktor bezparametrowy nie robi nic- //zdefiniujemy go od razu w klasie Uczen() //konstruktor ustalający pola prywatne klasy na podstawie //jego parametrów Uczen(string aimie, string anazwisko,float asrednia); ;//koniec deklaracji klasy Zaimplementujmy 2 konstruktor poniżej (pomiedzy deklaracją klasy a funkcją main(), lub pod funkcją main())

Klasa Uczen class Uczen...; //implementacja metod klasy Uczen Uczen:: Uczen(string aimie, string anazwisko,float asrednia) //ustawiamy pola naszej klasy zgodnie z parametrami imie = aimie; nazwisko = anazwisko; srednia = asrednia; int main()

Klasa Uczen- metoda Ustaw Dodajemy kolejna metodę w klasie: //metoda Ustaw ustalająca pola prywatne klasy zgodnie //z wartościami jej parametrów void Ustaw(string aimie, string anazwisko,float asrednia); a następnie jej impelmentację poiżej implementacji konstruktorów void Uczen::Ustaw(string aimie, string anazwisko,float asrednia) imie = aimie; nazwisko = anazwisko; srednia = asrednia; //implementacja wyglada tak samo jak zwyklego konstruktora, // ale to jest metoda, ona nie tworzy obiektu

Klasa Uczen metody zwracające pola Napiszemy terazmetody zwracające wartości poszczególnych pól (get) string ZwrocImie() const; string ZwrocNazwisko() const; float ZwrocSrednia() const; IMPLEMENTACJA string Uczen::ZwrocImie() const return imie; string Uczen::ZwrocNazwisko() const return nazwisko; float Uczen::ZwrocSrednia() const return srednia;

Klasa Uczen- metoda Wyswietl W klasie dopisujemy kolejną metodę: //metoda Wyswietl wyświetlająca na ekranie dane osobowe ucznia void Wyswietl() const; //const bo metoda nie zmienia pol klasy,jak wszystkie // poprzednie metody IMPLEMENTACJA Poniżej zamieszczamy implementację: void Uczen::Wyswietl() const cout<<"imie "<<imie<<endl; cout<<"nazwisko "<<nazwisko<<endl; cout<<"srednia "<<srednia<<endl;

Klasa Uczen- Lepszy //metoda logiczna Lepszy, porównująca średnią ucznia //na którym wykonujemy metodę ze średnią drugiego ucznia // przekazanego jako parametr do funkcji. //Zwraca wartość true, gdy obiekt na rzecz którego jest // wykonana metoda ma lepszą średnią bool Lepszy( Uczen u) const; //parametr przekazujemy przez wartość, bo go nie zmieniamy //tylko korzystamy z jego wartości //można w takim przypadku przez stałą referencję (zalecane) //bool Lepszy(const Uczen & u) const; IMPLEMENTACJA: bool Uczen::Lepszy(Uczen u) const return srednia > u.srednia;

Klasa Uczen metoda Promowany //metoda logiczna Promowany określająca na podstawie // średniej czy uczeń jest promowany do następnej klasy bool Promowany() const; IMPLEMENTACJA: bool Uczen::Promowany() const return srednia>=3; Możemy teraz przejść do metody main i stworzyć obiekty naszej klasy

Klasa Uczen f-cja main() int main(int argc, char* argv[]) //tworzymy ucznia przy pomocy konstruktora // bezparametrowego Uczen ucz1; //ustawiamy dane ucznia przy pomocy metody Ustaw ucz1.ustaw("jan", "Kowalski", 4.0); //wyswietlamy kontrolnie dane ucznia ucz1.wyswietl(); //tworzymy drugiego ucznia przy pomocy //konstruktora z paparmetrami Uczen ucz2("pawel", "Nowak", 3.5); ucz2.wyswietl();

Klasa Uczen funkcja main() //porownanie uczniow przy pomocy metody Lepszy if(ucz1.lepszy(ucz2)) cout<<"lepszy uczen to: "<<endl; ucz1.wyswietl(); else cout<<"lepszy uczen to: "<<endl; ucz2.wyswietl();

Klasa Uczen funkcja main() //sprawdzamy uczniow czy sa promowani cout<<"lista uczniow promowanych:"<<endl; if(ucz1.promowany()) ucz1.wyswietl(); if(ucz2.promowany()) ucz2.wyswietl(); system("pause"); return 0;

Funkcje z klasami jako parametry Tak jak robilismy to przy strukturach w naszych programach możemy pisać funkcjie operujące na zmiennych typu klasowego- obiektach. Napiszmy funkcję, która dla przekazanych przez parametry dwóch uczniów zwraca w wyniku nazwisko ucznia o wyzszej średniej, a imię tego ucznia przekazuje przez parametr. Funkcję zapiszemy pomiedzy implementacją metod naszej klasy a funkcja main(): string MaxSrednia(Uczen u1, Uczen u2, string & im) if (u1.zwrocsrednia()> u2.zwrocsrednia()) im = u1.zwrocimie();//nadajemy wartosc parametrowi im return u1.zwrocnazwisko(); else im = u2.zwrocimie();//nadajemy wartosc parametrowi im return u2.zwrocnazwisko();

Funkcje z klasami jako parametry string MaxSrednia(Uczen u1, Uczen u2, string & im) Funkcja ma zwrócić imię i nazwisko, nazwisko jest wynikiem funkcji dlatego funkcja jest typu string, a imię zwracamy przezdodatkowy parametr, dlatego przekazujemy go przez referencje (gdyż wewnatrz funkcji nadamy temu parametrowi wartość, bez & prametr przekazany byłby przez wartość, czyli działalibysmy na kopii) Wewnatrz funkcji nie możemy sięgać do pól klasy (jak to robiliśmy przy strukturach), gdyż są one prywatne. Korzystamy z odpowiednich metod klasy. Odwołujemy się do nich przez. ObiektKlasy.Metoda(lista parametrów); np. u1.zwrocsrednia(); Powyższą funkcję możemy wykorzystać w funkcji main(): string i, n= MaxSrednia(ucz1, ucz2, i); cout<<"uczen o wyzszej sredniej to :" <<i<<" "<<n<<endl;