=1=organizacja kursu, paradygmaty, ogólnie o c i...

97
Organizacja kursu Programowanie obiektowe Język C i C++ – najistotniejsze różnice Przeciążanie operatorów Organizacja kursu, paradygmaty, ogólnie o C i C++ Bogdan Kreczmer [email protected] Katedra Cybernetyki i Robotyki Wydzialu Elektroniki Politechniki Wroclawskiej Kurs: Programowanie obiektowe Copyright c 2019 Bogdan Kreczmer Niniejszy dokument zawiera materialy do wykladu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wylącznie do wlasnych prywatnych potrzeb i może on być kopiowany wylącznie w calości, razem z niniejszą stroną tytulową. Programowanie obiektowe Organizacja kursu, paradygmaty, ogólnie o C i C++

Upload: phamdang

Post on 01-Mar-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Organizacja kursu, paradygmaty, ogólnie o C i C++

Bogdan [email protected]

Katedra Cybernetyki i RobotykiWydziału Elektroniki

Politechniki Wrocławskiej

Kurs: Programowanie obiektowe

Copyright c©2019 Bogdan Kreczmer

Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest onudostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowanywyłącznie w całości, razem z niniejszą stroną tytułową.

Programowanie obiektowe Organizacja kursu, paradygmaty, ogólnie o C i C++

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Niniejsza prezentacja została wykonana przy użyciu sys-temu składu LATEX oraz stylu beamer, którego autoremjest Till Tantau.

Strona domowa projektu Beamer:http://latex-beamer.sourceforge.net

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Moje dane

Bogdan Kreczmer, dr inż., pok. 307 bud. C-3

Terminy konsultacji: pn. 9:00 – 11:00cz. 13:00 – 15:00

Strona kursu:http://sequoia.iiar.pwr.wroc.pl/∼kreczmer/kpohttp://rab.iiar.pwr.wroc.pl/∼kreczmer/kpo

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Spis treści

1 Organizacja kursu

2 Programowanie obiektowePodejście obiektoweJęzyki programowania

3 Język C i C++ – najistotniejsze różniceKilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

4 Przeciążanie operatorówOperatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Warunki udziału i przebieg kursu

Warunki udziału w kursie

Wykłady i materiały do wykładów

Projekt

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Warunki udziału i przebieg kursu

Warunki udziału w kursie

Wykłady i materiały do wykładów

Projekt

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Warunki udziału i przebieg kursu

Warunki udziału w kursie

Wykłady i materiały do wykładów

Projekt

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Warunki zaliczeń

Kurs kończy się zaliczeniem. Zaliczenie kursu można uzyskać podwarunkiem uzyskania zaliczenia z projektu oraz pozytywnej ocenyz ekranówkiSposób liczenia oceny z kursu:

0,6E + 0,4P

Ocena celująca → ekranówka: ­ 5,0; projekt: 5,5

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Warunki zaliczeń

Kurs kończy się zaliczeniem. Zaliczenie kursu można uzyskać podwarunkiem uzyskania zaliczenia z projektu oraz pozytywnej ocenyz ekranówkiSposób liczenia oceny z kursu:

0,6E + 0,4P

Ocena celująca → ekranówka: ­ 5,0; projekt: 5,5

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Warunki zaliczeń

Kurs kończy się zaliczeniem. Zaliczenie kursu można uzyskać podwarunkiem uzyskania zaliczenia z projektu oraz pozytywnej ocenyz ekranówkiSposób liczenia oceny z kursu:

0,6E + 0,4P

Ocena celująca → ekranówka: ­ 5,0; projekt: 5,5

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Literatura

Literatura podstawowa:

S. B. Leppman, Josee Lajoie, B. E. Moo; C++ Primer, 2012

J. Grębosz; Symfonia C ++ standard

J. Grębosz; Pasja C ++

Bjarne Stroustrup; Język C++ Kompedium wiedzy, Wydanie IV,Helion, 2014

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Literatura

Literatura pomocnicza:

B. Eckel; Thinking in C++

Nicolai M. Josuttis; C++ Biblioteka standardowa, Podręcznik pro-gramisty

David Vandevoorde, Nicolai M. Josuttis, C++ szablony

Grady Booch, James Rumbaugh, Ivar Jacobson; UML przewodnikużytkownika

Michał Śmiałek; Zrozumieć UML 2.0 – Metody modelowania obiek-towego, HELION 2005

James Martin, James J. Odell; Podstawy metod obiektowych

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Programowanie obiektowe – Czym jest?

Programowanie obiektowe oparte jest na podejściu obiektowym doanalizy problemu oraz syntezy i implementacji jego rozwiązania.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Programowanie obiektowe – Czym jest?

Programowanie obiektowe oparte jest na podejściu obiektowym doanalizy problemu oraz syntezy i implementacji jego rozwiązania.

Podejście obiektowe bazuje na fundamentalnej cesze aktywnościintelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębneobiekty w swoim otoczeniu, przypisywać im własności oraz określaćsposób ich interakcji między sobą i otoczeniem.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Języki programowania obiektowego

To co cechuje języki programowania obiektowego (języki obiekto-we) to to, że wspomagają i wymuszają stosowanie metod podejściaobiektowego.

Najistotniejszą cechą podejścia obiektowego jest integracja strukturdanych i kodu, który odwołuje się do tych struktur. Ten rodzaj inte-gracji ma formę obiektów.

Typy struktur danych zintegrowanychw ten sposób z kodem nazywane sąklasami.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Języki programowania obiektowego

To co cechuje języki programowania obiektowego (języki obiekto-we) to to, że wspomagają i wymuszają stosowanie metod podejściaobiektowego.

Najistotniejszą cechą podejścia obiektowego jest integracja strukturdanych i kodu, który odwołuje się do tych struktur. Ten rodzaj inte-gracji ma formę obiektów.

Typy struktur danych zintegrowanychw ten sposób z kodem nazywane sąklasami.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Języki programowania obiektowego

To co cechuje języki programowania obiektowego (języki obiekto-we) to to, że wspomagają i wymuszają stosowanie metod podejściaobiektowego.

Najistotniejszą cechą podejścia obiektowego jest integracja strukturdanych i kodu, który odwołuje się do tych struktur. Ten rodzaj inte-gracji ma formę obiektów.

Typy struktur danych zintegrowanychw ten sposób z kodem nazywane sąklasami.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Warto wiedzieć

Ogólna koncepcja podejścia obiektowego do programowania powstałana przełomie lat 50-tych i 60-tych w MIT.

W bardziej formalnej postaci koncepcje te zostały wprowadzone wjęzyku Simula 67 w latach 60-tych.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Języki obiektowe

Przykłady języków obiektowych:

Smalltalk

Ruby

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

C++

Język C++ nie jest językiem obiektowym!

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Od koncepcji do paradygmatu

Podejście obiektowe do programowania wyznaczasposób patrzenia na struktury danych i przepływsterowania w programie oraz wykonywanie całegoprogramu.Wprowadza ono pewien zbiór pojęć i koncepcji,który determinuje sposób rozumienia procesuprogramowania.

Ten zbiór pojęć i koncepcji odnoszący się doprogramowania określany jest mianemparadygmatu programowania.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Od koncepcji do paradygmatu

Podejście obiektowe do programowania wyznaczasposób patrzenia na struktury danych i przepływsterowania w programie oraz wykonywanie całegoprogramu.Wprowadza ono pewien zbiór pojęć i koncepcji,który determinuje sposób rozumienia procesuprogramowania.

Ten zbiór pojęć i koncepcji odnoszący się doprogramowania określany jest mianemparadygmatu programowania.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne

Programowanie modularne

Programowanie imperatywne

Programowanie obiektowe

Programowanie uogólnione

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne – zaleca dzielenie programu naprocedury i nie wykorzystywanie zmiennych globalnych.

Programowanie strukturalne

Programowanie modularne

Programowanie imperatywne

Programowanie obiektowe

Programowanie uogólnione

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne – wywoływanie procedur powinnotworzyć hierarchiczną strukturę z wykorzystanie instrukcjiwarunkowych i pętli. Zakazuje się używania instrukcji goto.

Programowanie modularne

Programowanie imperatywne

Programowanie obiektowe

Programowanie uogólnione

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne

Programowanie modularne – zaleca stosowanie modułówgrupujących zbiory procedur.

Programowanie imperatywne

Programowanie obiektowe

Programowanie uogólnione

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne

Programowanie modularne

Programowanie imperatywne – opisuje proces wykonywaniaprogramu jako sekwencję instrukcji zmieniających stan programu.

Programowanie obiektowe

Programowanie uogólnione

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne

Programowanie modularne

Programowanie imperatywne

Programowanie obiektowe – definiuje program jak zbiór obiektów.Ich istotą jest łączenie stanu i zachowania. Program to zbiórobiektów komunikujących się między sobą w celu wykonania zadania.

Programowanie uogólnione

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne

Programowanie modularne

Programowanie imperatywne

Programowanie obiektowe

Programowanie uogólnione – kładzie nacisk na ogólną konstrukcjęalgorytmu bez konieczności znajomości typów danych, np. sortowanie.

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przykładowe paradygmaty programowania

Programowanie proceduralne

Programowanie strukturalne

Programowanie modularne

Programowanie imperatywne

Programowanie obiektowe

Programowanie uogólnione

Programowanie sterowane zdarzeniami – opis programuuwypuklający przekazywanie sterowania między poszczególnymimodułami. Odnosi się on przede wszystkim do środowiskwieloprocesorowych. Jednak nie tylko. Przykładem są okienkowesystememy graficzne, np. system X-Window.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Języki programowania

Języki programowania mogą wspierać jednocześnie wiele paradygma-tów programowania.

Czyste języki obiektowe wspierają zasadniczo tylko paradygmatprogramowania obiektowego.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Języki programowania

Języki programowania mogą wspierać jednocześnie wiele paradygma-tów programowania.

Czyste języki obiektowe wspierają zasadniczo tylko paradygmatprogramowania obiektowego.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

C++

Język C++ jest językiem hybrydowym!

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Po co to wszystko?

Dlaczego powstają nowe języki?

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzenie rozwiązania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Co się dzieje, gdy zabraknie zgodności

http://mars.jpl.nasa.gov/msp98/orbiter/moi.html

Mars Climate Orbiter

Terminarz

Data startu: 11 grudnia 1998Osiągnięcie celu: wrzesień 1999

Cel misji

Badanie klimatu Marsa jego atmosfery izmian na powierzchni. Miał również służyćjako satelita komunikacyjny na potrzebyprogramu Mars Surveyor ’98 oraz Mars PolarLander.

Sonda Mars Climate Orbiter za bardzo zbliżyła się do Marsa i weszła w górne warstwy jegoatmosfery, co skutkowało jej zniszczeniem.

Bezpośrednią przyczyną okazało się przyjęcie złych jednostek. Oprogramowanie komputerapokładowego generowało dane w jednostkach imperialnych zamiast w jednostkach SI. To, żemają to być jednostki SI było uzgodnione w kontrakcie między NASA i firmą Lockheedproducentem sondy.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Zastanówmy się ...

Czy C++ jest lepszym językiem niż C?

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzeń rozwiązana i przestrzeń problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzeń rozwiązana i przestrzeń problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzeń rozwiązana i przestrzeń problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzeń rozwiązana i przestrzeń problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Przestrzeń rozwiązana i przestrzeń problemu

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Podejście obiektoweJęzyki programowania

Konkluzja

Ani język C ani też C++ nie jest ani generalnie gorszy ani teżgeneralnie lepszy. Ocena języka zależy od problemu, dla któregochcemy stworzyć model implementacji rozwiązania (programkomputerowy). Dopiero w tym kontekście można uzasadniaćwybór języka programowania.

Dotyczy to również wszystkich innych języków programowania.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

C++ nie jest nadzbiorem C

Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.ANSI C: const int Zm=23; ≡ extern const int Zm=23;

ANSI/ISO C++: const int Zm=23; ≡ static const int Zm=23;

Rozmiary stałych znakowych:ANSI C: sizeof (’a’) ≡ sizeof (int)

ANSI/ISO C++: sizeof (’a’) ≡ sizeof (char)

Niezadeklarowane funkcje:ANSI C: przyjmowane jest automatycznie int fun(int, ...).

ANSI/ISO C++: jest to niedopuszczalne.

Deklaracja extern int fun():ANSI C: równoważna extern int fun(...).

ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

C++ nie jest nadzbiorem C

Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.ANSI C: const int Zm=23; ≡ extern const int Zm=23;

ANSI/ISO C++: const int Zm=23; ≡ static const int Zm=23;

Rozmiary stałych znakowych:ANSI C: sizeof (’a’) ≡ sizeof (int)

ANSI/ISO C++: sizeof (’a’) ≡ sizeof (char)

Niezadeklarowane funkcje:ANSI C: przyjmowane jest automatycznie int fun(int, ...).

ANSI/ISO C++: jest to niedopuszczalne.

Deklaracja extern int fun():ANSI C: równoważna extern int fun(...).

ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

C++ nie jest nadzbiorem C

Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.ANSI C: const int Zm=23; ≡ extern const int Zm=23;

ANSI/ISO C++: const int Zm=23; ≡ static const int Zm=23;

Rozmiary stałych znakowych:ANSI C: sizeof (’a’) ≡ sizeof (int)

ANSI/ISO C++: sizeof (’a’) ≡ sizeof (char)

Niezadeklarowane funkcje:ANSI C: przyjmowane jest automatycznie int fun(int, ...).

ANSI/ISO C++: jest to niedopuszczalne.

Deklaracja extern int fun():ANSI C: równoważna extern int fun(...).

ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

C++ nie jest nadzbiorem C

Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.ANSI C: const int Zm=23; ≡ extern const int Zm=23;

ANSI/ISO C++: const int Zm=23; ≡ static const int Zm=23;

Rozmiary stałych znakowych:ANSI C: sizeof (’a’) ≡ sizeof (int)

ANSI/ISO C++: sizeof (’a’) ≡ sizeof (char)

Niezadeklarowane funkcje:ANSI C: przyjmowane jest automatycznie int fun(int, ...).

ANSI/ISO C++: jest to niedopuszczalne.

Deklaracja extern int fun():ANSI C: równoważna extern int fun(...).

ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Wyświetlenie prostego komunikatuJęzyk C Język C++

#include <stdio.h>

int main( ){

printf(”Hejka!!!\n”);return 0;

}

#include <iostream>

int main( ){

std::cout << ”Hejka!!!\n”;}

Funkcja main w języku C++ domyślnie zwraca wartość 0. Operacjewyjścia są realizowane na obiekcie cout z wykorzystaniem przeciążeniaoperatora lewostronnego przesunięcia bitowego <<

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Wyświetlenie prostego komunikatuJęzyk C Język C++

#include <stdio.h>

int main( ){

printf(”Hejka!!!\n”);return 0;

}

#include <iostream>

int main( ){

std::cout << ”Hejka!!!” << std::endl;}

Funkcja main w języku C++ domyślnie zwraca wartość 0. Operacjewyjścia są realizowane na obiekcie cout z wykorzystaniem przeciążeniaoperatora lewostronnego przesunięcia bitowego <<

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Wyświetlenie prostego komunikatuJęzyk C Język C++

#include <stdio.h>

int main( ){

printf(”Hejka!!!\n”);return 0;

}

#include <iostream>using namespace std;

int main( ){

cout << ”Hejka!!!” << endl;}

Użycie dyrektyw using namespace pozwala pominąć przedrostekprzestrzeni nazw std

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Odpowiedniość plików nagłówkowych dla C i C++

<math.h>

<stdio.h>

<ctype.h>

<stdlib.h>

<string.h>

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Odpowiedniość plików nagłówkowych dla C i C++

<math.h> −→ <cmath>

<stdio.h>

<ctype.h>

<stdlib.h>

<string.h>

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Odpowiedniość plików nagłówkowych dla C i C++

<math.h> −→ <cmath>

<stdio.h> −→ <cstdio>

<ctype.h> −→ <cctype>

<stdlib.h> −→ <cstdlib>

<string.h> −→ <cstring>

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Rozszerzenia plików C++

Nie ma jednej ustalonej konwencji.

Programowanie obiektowe ....

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Rozszerzenia plików C++

Najczęściej spotykane są:

∗.H ←→ ∗.C

Programowanie obiektowe ...

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Rozszerzenia plików C++

Najczęściej spotykane są:

∗.H ←→ ∗.C

∗.hh ←→ ∗.cc

Programowanie obiektowe ..

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Rozszerzenia plików C++

Najczęściej spotykane są:

∗.H ←→ ∗.C

∗.hh ←→ ∗.cc

∗.hpp ←→ ∗.cpp

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Rozszerzenia plików C++

Najczęściej spotykane są:

∗.H ←→ ∗.C

∗.hh ←→ ∗.cc

∗.hpp ←→ ∗.cpp

∗.hxx ←→ ∗.cxx

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Kilka przykładowych różnicRóżnice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z języka CKonwencje nazw plików źródłowych dla języka C++

Rozszerzenia plików C++

Można również stosować konwencje mieszane.

∗.H ←→ ∗.C

∗.hh ←→ ∗.cc

∗.hpp ←→ ∗.cpp

∗.hxx ←→ ∗.cxx

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

Programowanie obiektowe ....

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = ?

Programowanie obiektowe ...

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = ?

Programowanie obiektowe ..

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = ?

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

???}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol Dodaj( Symbol y, Symbol x ){

return TabliczkaDzialania[y][x];}

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol operator + ( Symbol y, Symbol x ){

return TabliczkaDzialania[y][x];}

int main( ){Symbol y = a, x = b, wynik;

wynik = ???(y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol operator + ( Symbol y, Symbol x ){

return TabliczkaDzialania[y][x];}

int main( ){Symbol y = a, x = b, wynik;

wynik = operator + (y, x);}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol operator + ( Symbol y, Symbol x ){

return TabliczkaDzialania[y][x];}

int main( ){Symbol y = a, x = b, wynik;

wynik = y + x;}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol operator + ( Symbol y, Symbol x ){

return TabliczkaDzialania[y][x];}

int main( ){Symbol y = a, x = b, wynik;

wynik = y + x;}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Czy są jakieś ograniczenia na

definiowanie funkcji operatorowych?

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Arytmetyka symboli

enum Symbol { e, a, b };

Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };

Symbol operator + ( Symbol y, Symbol x ){

return TabliczkaDzialania[y][x];}

int main( ){Symbol y = a, x = b, wynik;

wynik = y + x;}

Tabliczka działania

+ e a be e a ba a b eb b e a

a + b = e

Nie możemy definiować funkcji operatorowych. gdy ich wszystkie parametry są typów

wbudowanych takich jak float, int, itd. np.

int operator + (int arg1, float arg2)

{. . .

}

Dla tych typów definicje tych operacji są już wbudowane w kompilator.

Programowanie obiektowe

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

To samo na kilka sposobów

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = e

Programowanie obiektowe ....

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

To samo na kilka sposobów

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = e

Programowanie obiektowe ...

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

To samo na kilka sposobów

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);wynik = operator+ (y, x);

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = e

Programowanie obiektowe ..

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

To samo na kilka sposobów

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);wynik = operator+ (y, x);wynik = y + x;

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = e

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

To samo na kilka sposobów

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = Dodaj(y, x);wynik = operator+ (y, x);wynik = y + x;

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b = e

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Łączność działania – porządek wykonywania operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b + a = ?

Programowanie obiektowe ....

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Łączność działania – porządek wykonywania operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = y + x + y;

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b + a = ?

Programowanie obiektowe ...

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Łączność działania – porządek wykonywania operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = (y + x) + y;

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b + a = ?

Programowanie obiektowe ..

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Łączność działania – porządek wykonywania operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = (y + x) + y;wynik = operator+ (operator+ (y ,x), y );

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b + a = ?

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Łączność działania – porządek wykonywania operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = (y + x) + y;wynik = operator+ (operator+ (y ,x), y );wynik = Dodaj(Dodaj(x, y), y);

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + b + a = ?

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Jawna zmiana porządku wykonywanych operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = y + (x + y);

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + (b + a) = ?

Programowanie obiektowe ....

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Jawna zmiana porządku wykonywanych operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = y + (x + y);wynik = operator+ (y, operator+ (x ,y) );

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + (b + a) = ?

Programowanie obiektowe ...

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Jawna zmiana porządku wykonywanych operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = y + (x + y);wynik = operator+ (y, operator+ (x ,y) );wynik = Dodaj(y , Dodaj(x, y) );

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + (b + a) = ?

Programowanie obiektowe ..

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Jawna zmiana porządku wykonywanych operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = y + (x + y);wynik = operator+ (y, operator+ (x ,y) );wynik = Dodaj(y , Dodaj(x, y) );

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + (b + a) = ?

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Operatory jako funkcjeŁączność operatorów i porządek wykonywania operacji

Jawna zmiana porządku wykonywanych operacji

enum Symbol { e, a, b };. . .

Symbol Dodaj( Symbol x, Symbol y );

Symbol operator + ( Symbol x, Symbol y );. . .

int main( ){Symbol y = a, x = b, wynik;

wynik = y + (x + y);wynik = operator+ (y, operator+ (x ,y) );wynik = Dodaj(y , Dodaj(x, y) );

}

Tabliczka działania

+ e a b

e e a ba a b eb b e a

a + (b + a) = ?

Programowanie obiektowe .

Organizacja kursuProgramowanie obiektowe

Język C i C++ – najistotniejsze różnicePrzeciążanie operatorów

Koniec prezentacjiDziękuję za uwagę

Programowanie obiektowe Organizacja kursu, paradygmaty, ogólnie o C i C++