Programowanie obiektowe w języku

Podobne dokumenty
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 2. Język C++. Wykład 3.

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

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

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

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

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

Język C++ wykład VIII

Wstęp do Programowania 2

Laboratorium 1 - Programowanie proceduralne i obiektowe

Technologie cyfrowe semestr letni 2018/2019

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

Programowanie obiektowe w języku

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

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.

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

Technologie cyfrowe semestr letni 2018/2019

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

Języki i paradygmaty programowania

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

Podstawy Programowania Obiektowego

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.

Informatyka. Wy-08 Klasy. mgr inż. Krzysztof Kołodziejczyk

Zaawansowane programowanie w języku C++ Programowanie obiektowe

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

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

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Programowanie obiektowe język C++

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

Programowanie obiektowe w C++ Wykład 12

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

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

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

Programowanie obiektowe

Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Materiały do zajęć VII

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

dr inż. Jarosław Forenc

TEMAT : KLASY POLIMORFIZM

referencje Wykład 2. Programowanie (język C++) Referencje (1) int Num = 50; zdefiniowano zmienną Num (typu int) nadając jej wartość początkową 50.

Wprowadzenie do programowania i programowanie obiektowe

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

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

Przekazywanie argumentów wskaźniki

Do czego służą klasy?

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie II C16

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

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

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Programowanie I C6

Wstęp do programowania

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe

Programowanie, część I

Programowanie i struktury danych

PARADYGMATY PROGRAMOWANIA Wykład 2

Wykład 1

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)

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

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

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

Informatyka 2. Wykład nr 3 ( ) Politechnika Białostocka. - Wydział Elektryczny. dr inŝ. Jarosław Forenc

( wykł. dr Marek Piasecki )

Wstęp do programowania obiektowego, wykład 7

Programowanie 2. Język C++. Wykład Relacje między klasami, klasy zagnieŝdŝone, klasy lokalne

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

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

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

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Programowanie Komputerów

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,

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

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wstęp do programowania

DYNAMICZNE PRZYDZIELANIE PAMIECI

Szablon klasy std::vector

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

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

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

Wykład 8: klasy cz. 4

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

Mechanizm dziedziczenia

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Programowanie obiektowe

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

Dziedziczenie jednobazowe, poliformizm

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

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 I C / C++ laboratorium 01 Organizacja zajęć

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

PROE wykład 1. dr inż. Jacek Naruniec

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

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

Transkrypt:

Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl

Regulamin przedmiotu i zasady zaliczenia 1. Przedmiot składa się z: a. 7 wykładów i 7 obowiązkowych ćwiczeń, b. kolokwium zaliczeniowego, c. obowiązkowego projektu zaliczeniowego. 2. Postępy studenta opisane są skalą punktową w zakresie 0-100 punktów. Punkty otrzymuje się za: a. Zaliczenie wejściówek przeprowadzonych na 5 ćwiczeniach (max 5pkt każda). Łącznie 25 pkt.. b. Projekt zaliczeniowy, 35 punktów. i. W razie stwierdzenia niesamodzielności pracy (zapożyczenia kodu bez jego zrozumienia) student otrzymuje 0 punktów bez możliwości poprawy. ii. Ostateczny termin zaliczenia projektu ustala prowadzący ćwiczenia, jednak nie może być to termin późniejszy niż ostatni dzień semestru. c. Kolokwium zaliczeniowe oceniane do 40 punktów. i. Kolokwium przeprowadzane jest bez wykorzystania materiałów dodatkowych, tj. notatek, książek, pamięci zewnętrznych, itp.. ii. W razie stwierdzenia niesamodzielności pracy (zapożyczenia kodu bez jego zrozumienia) student otrzymuje 0 punktów. 3. Zaliczenie przedmiotu jest możliwe jedynie w przypadku uzyskania minimalnej liczby punktów z każdej ocenianej części, tj.: a. 13 punktów z ćwiczeń, b. 18 z projektu, c. 21 punktów z kolokwium W przypadku nieuzyskania minimalnej liczby punktów student otrzymuje ocenę niedostateczną (2.0). 4. W przypadku uzyskania minimalnej liczby punktów, podanej w punkcie 3, ostateczna ocena obliczana jest w następujący sposób: a. 0-50: 2.0 b. 51-60: 3.0 c. 61-70: 3.5 d. 71-80: 4.0 e. 81-90: 4.5 f. 91-100: 5.0 Oceny wystawione w ostatnim dnu semestru są ostateczne. Nie będzie popraw w sesji ani semestrze letnim. Nie istnieją oceny N. 5. Obecność na ćwiczeniach jest obowiązkowa. Każda nieusprawiedliwiona i nieodrobiona nieobecność na ćwiczeniach powoduje odjęcie 3 punktów. a. W przypadku nieobecności w wyniku zdarzeń losowych odrobienie ćwiczeń możliwe jest po przedstawieniu zwolnienia. b. W przypadku nieobecności planowanej (np. wyjazd) odrobienie jest możliwe jedynie w przypadku wcześniejszej zgody prowadzącego ćwiczenia. c. Zasady, oraz termin odrobienia nieobecności ustala prowadzący ćwiczenia. 6. Prowadzący ćwiczenia może zorganizować poprawę kolokwium zaliczeniowego. Do kolokwium poprawkowego może przystąpić student: a. Obecny na kolokwium zaliczeniowym lub z usprawiedliwioną na nim nieobecnością. Obowiązują zasady jak w 5a,b. b. Z zaliczonym projektem zaliczeniowym. Brak pozytywnej oceny z projektu uniemożliwia poprawę kolokwium. c. Obecny na 5 z 7 wykładów. 7. Zapisy do grup laboratoryjnych odbywają się na pierwszym wykładzie. Kolejność zapisu wg. list rankingowych dostępnych w wirtualnym dziekanacie w dniu zapisu. a. Studenci niezapisanie na przedmiot nie mają prawa uczestniczyć w laboratoriach. b. Studenci zapisani, zapisani po terminie i nie wymienieni na listach dziekańskich zapisują się jako ostatni.

Zapisy na laboratoria Proponowane terminy laboraorium: 2 x Środa 8:15-10:00 1 x Czwartek 10:15-12:00 2 x Czwartek 12:15-14:00

Literatura Internet C++ programming tutorials Stack Overflow C++ reference - cppreference.com Kompilator online: http://cpp.sh/, http://coliru.stacked-crooked.com/ Google, Bing, Duck Duck Go Visual Studio 2015, Community or Visual Studio 2013, GCC Jak pompki - trzeba ćwiczyć, nie czytać!

Obiektowo? Proceduralnie np. C, Fortran Czyli poprzez dzielenie zadania na procedury wykonujące określone operacje. Zmienne, Dane, Procedury Wywoływanie procedur, przekazywanie danych przez argumenty Public domain

Obiektowo? Obiekt posiada zarówno dane jak i procedury operujące na nich. Obiekty mogą ze sobą współdziałać Program można składać z różnych obiektów - modularny Obiekty (powinny) są od siebie niezależne (do pewnego stopnia) Obiekt to instancja klasy. Posiada strukturę danych i metody jej manipulacji Public domain

Obiektowo Abstrakcyjność Hermetyzacja (enkapsulacja) Dziedziczenie i polimorfizm Hierarchia klas Organizacja kodu Dostęp do różnych obiektów poprzez jednorodny interfejs Łatwość utrzymania i rozwoju

Linus Torvalds Kernel Linuxa, git, bóstwo pomniejsze... (...)In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C. And limiting your project to C means that people don t screw that up, and also means that you get a lot of programmers that do actually understand low-level issues and don t screw things up with any idiotic object model crap.(...)

C language Dennis Ritchie - AT&T Bell Laboratories - 1972 The C Programming Language - first specification - 1978 1989: ANSI C89, 1990: ISO C90 1999: C99 standard Still in use, and here to stay for a while Wide range of applications. OS, microcontrollers, ATM systems... Efficiency and performance Provides low level access Influenced C++, Obj. C, C#, Java,...

C++ Bjarne Stroustrup - AT&T Bell Laboratories - 1979 C with classes C++ używany przez AT&T - 1983 Pierwsza specyfikacja - 1985

C++ Język ogolnego przeznaczenia Lepszy C Umożliwia abstrakcję Pozwala na programowanie proceduralne i obiektowe Rozumie C Kontrola typów - type safty (printf)

C++ # include <stdio.h> int main () { int a; scanf ("%d", &a); printf (" Hello! a=% d\n ", a); # include <iostream > int main () { int a; std :: cin >> a ; std :: cout << " Hello! a=" << a << std :: endl ; Type resolution at compilation bez formatowania Wygodniej?

namespace namespace nazwa { deklaracje - ustala przestrzeń nazw namespace A { namespace B { namespace C { nazwa1::nazwa2 - :: operator zasięgu - użyj nazwa2 z nazwa1 using namespace nazwa; - ostrożnie! using nazwa1::nazwa2; - nazwa2 jest teraz w zasięgu namespace nazwa1 = nazwa2; - alias przestrzeni

namespace # include <iostream > namespace A{ int fun () ; namespace B { namespace C { namespace D{ int fun () { return 3; int main () { int a = A:: fun (); int b = B::C::D:: fun (); std :: cout << " Hello!! a=" << a << " b=" << b << std :: endl ; using namespace B:: C; a=d:: fun (); std :: cout << " Hello!! a=" << a << " b=" << b << std :: endl ; using D:: fun ; int c = fun (); std :: cout << " Hello!! a=" << a << " b=" << b << " c= " << c << std :: endl ; namespace AA=B:: C:: D; namespace BB=A; a = AA :: fun (); b = BB :: fun (); std :: cout << " Hello!! a=" << a << " b=" << b << std :: endl ; using namespace AA; using namespace BB; a = AA :: fun (); b = BB :: fun (); std :: cout << " Hello!! a=" << a << " b=" << b << std :: endl ; a = fun (); b = fun (); std :: cout << " Hello!! a=" << a << " b=" << b << std :: endl ; int A:: fun () { return 1;

vector # include <iostream > # include <vector > using namespace std ; int main (){ vector <int > a (5) ; a [0] = 10; for ( int i=1; i<a. size (); ++i){ a[i] = 10*( i +1) ; cout << a[i] << endl ; cout << endl ; a. pop_back (); a. push_back (1) ; for ( int i=0; i<a. size (); ++i) cout << a[i] << endl ; Dynamiczna - resize(20) Ciągla w pamięci - dostęp przez [ ]

new & delete # include <iostream > # include <vector > using namespace std ; struct D{ int a; ; int main (){ int n =10; D * p = new D; D * tab = new D [50]; tab [8]. a = 1; cout << tab [8]. a << endl ; delete p; delete [] tab ; new zamiast malloc delete zamiast free kontrola typu, malloc zwracał *void

# include <iostream > using namespace std ; referencja & void fun1 ( int a){ a =1; void fun2 ( int * pa){ *pa =2; void fun3 ( int & a){ a =3; int main (){ int a = 6; cout << a << endl ; fun1 (a); cout << a << endl ; fun2 (&a); cout << a << endl ; fun3 (a); cout << a << endl ; int & b; // this will not compile Przypomina wskaźnik Można przypisać tylko raz Nie może istnieć niezainicjalizowana Dalej jak zmienna

const # include <iostream > using namespace std ; # define sin cos # define true false # define fabs abs # define PI 3.141592 const double pi =3.141592 #define to zło const jest sprawdzane w czasie kompilacji pi = 3; // compiler error

Klasa struct A{ int a; ; class B{ public : int a; private : A b; class C{ public : A a; B b; int c [5]; ; int main (){ C c; c.a.a =0; c.b.a =3; c.c [2]=9; c.b.b.z =2; // Will not work Podobna do struct ale z hermetyzacją i kilkoma innymi dodatkami Atrybutami mogą być typy proste, inne klasy, kolekcje, wskaźniki i referencje public, private i protected domyślnie wszystko private dostępne przez operator. Przykład...

# include <iostream > using namespace std ; Funkcje w klasie? Czyli metody! class person { public : void setage ( int a){ mage=a; int getage (){ return mage ; void printts (){ cout << ms << endl ; void calcs (); private : int mage ; int ms; ; void person :: calcs (){ ms = 2 * mage ; int main (){ person p; p. setage (3) ; p. calcs (); cout << p. getage () << endl ; p. printts (); Mogą być w ciele albo poza - z deklaracją Metoda ma dostęp do wszystkich atrybutów klasy Ukrywaj atrybuty, wystawiaj interfejs

# include <iostream > # include <stdlib.h> using namespace std ; Konstruktor i destruktor class collection { public : collection (){ size =0; tab=null ; collection ( int s) : size (s) { allocate () ; collection ( collection & c){ size = getsize (); // tab =???? ~ collection (){ cout << " The cleaning service!" << endl ; delete [] tab ; void setsize ( int a){ size=a; int getsize (){ return size ; void allocate (); int & rtab ( int i) { return tab [i ]; private : int size ; int * tab ; ; void collection :: allocate () { tab = new int [ size ]; int main (){... Metody specjalne, tworzone domyslnie Definicja w lub poza ciałem Destruktor wywoływany przed zwolnieniem zasobów