You are on page 1of 97

Organizacja kursu

Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Organizacja kursu, paradygmaty, oglnie o C i C++


Bogdan Kreczmer
bogdan.kreczmer@pwr.wroc.pl
Katedra Cybernetyki i Robotyki
Wydziau Elektroniki
Politechniki Wrocawskiej

Kurs: Programowanie obiektowe


c
Copyright 2016
Bogdan Kreczmer
Niniejszy dokument zawiera materiay do wykadu dotyczcego programowania obiektowego. Jest on
udostpniony pod warunkiem wykorzystania wycznie do wasnych prywatnych potrzeb i moe on by kopiowany
wycznie w caoci, razem z niniejsz stron tytuow.
Programowanie obiektowe

Organizacja kursu, paradygmaty, oglnie o C i C++

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Niniejsza prezentacja zostaa wykonana przy uyciu systemu skadu LATEX oraz stylu beamer, ktrego autorem
jest Till Tantau.
Strona domowa projektu Beamer:
http://latex-beamer.sourceforge.net

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Moje dane

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


Terminy konsultacji: wt. 13:00 15:00
pt. 15:00 17:00

Strona kursu:
http://sequoia.iiar.pwr.wroc.pl/ kreczmer/kpo
http://rab.iiar.pwr.wroc.pl/ kreczmer/kpo
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Spis treci
1

Organizacja kursu

Programowanie obiektowe
Podejcie obiektowe
Jzyki programowania

Jzyk C i C++ najistotniejsze rnice


Kilka przykadowych rnic
Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Przecianie operatorw
Operatory jako funkcje
czno operatorw i porzdek wykonywania operacji

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Warunki udziau i przebieg kursu

Warunki udziau w kursie


Wykady i materiay do wykadw
Laboratoria

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Warunki udziau i przebieg kursu

Warunki udziau w kursie


Wykady i materiay do wykadw
Laboratoria

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Warunki udziau i przebieg kursu

Warunki udziau w kursie


Wykady i materiay do wykadw
Laboratoria

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Warunki zalicze
Kurs koczy si zaliczeniem. Zaliczenie kursu mona uzyska pod
warunkiem uzyskania zaliczenia z laboratorium oraz pozytywnej
oceny z ekranwki
Sposb liczenia oceny z kursu:
0,6E + 0,4L
Ocena celujca ekranwka: 5,0; laboratorium: 5,5

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Warunki zalicze
Kurs koczy si zaliczeniem. Zaliczenie kursu mona uzyska pod
warunkiem uzyskania zaliczenia z laboratorium oraz pozytywnej
oceny z ekranwki
Sposb liczenia oceny z kursu:
0,6E + 0,4L
Ocena celujca ekranwka: 5,0; laboratorium: 5,5

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Warunki zalicze
Kurs koczy si zaliczeniem. Zaliczenie kursu mona uzyska pod
warunkiem uzyskania zaliczenia z laboratorium oraz pozytywnej
oceny z ekranwki
Sposb liczenia oceny z kursu:
0,6E + 0,4L
Ocena celujca ekranwka: 5,0; laboratorium: 5,5

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Literatura
Literatura podstawowa:
S. B. Leppman, Josee Lajoie, B. E. Moo; C++ Primer, 2012
J. Grbosz; Symfonia C ++ standard
J. Grbosz; Pasja C ++
Bjarne Stroustrup; Jzyk C++ Kompedium wiedzy, Wydanie IV,
Helion, 2014

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Literatura
Literatura pomocnicza:
B. Eckel; Thinking in C++
Nicolai M. Josuttis; C++ Biblioteka standardowa, Podrcznik programisty
David Vandevoorde, Nicolai M. Josuttis, C++ szablony
Grady Booch, James Rumbaugh, Ivar Jacobson; UML
uytkownika

przewodnik

Micha miaek; Zrozumie UML 2.0 Metody modelowania obiektowego, HELION 2005
James Martin, James J. Odell; Podstawy metod obiektowych
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Programowanie obiektowe Czym jest?


Programowanie obiektowe oparte jest na podejciu obiektowym do
analizy problemu oraz syntezy i implementacji jego rozwizania.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Programowanie obiektowe Czym jest?


Programowanie obiektowe oparte jest na podejciu obiektowym do
analizy problemu oraz syntezy i implementacji jego rozwizania.
Podejcie obiektowe bazuje na fundamentalnej cesze aktywnoci
intelektualnej, ktra pozwala ludziom (i nie tylko) wyrnia odrbne
obiekty w swoim otoczeniu, przypisywa im wasnoci oraz okrela
sposb ich interakcji midzy sob i otoczeniem.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Jzyki programowania obiektowego


To co cechuje jezyki programowania obiektowego (jzyki obiektowe),
to to e wspomagaj i wymuszaj stosowanie metod podejcia obiektowego.
Najistotniejsz cech podejcia obiektowego jest integracja struktur
danych i kodu, ktry odwouje si do tych struktur. Ten rodzaj integracji ma form obiektw.

Typy struktur danych zintegrowanych


w ten sposb z kodem nazywane s
klasami.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Jzyki programowania obiektowego


To co cechuje jezyki programowania obiektowego (jzyki obiektowe),
to to e wspomagaj i wymuszaj stosowanie metod podejcia obiektowego.
Najistotniejsz cech podejcia obiektowego jest integracja struktur
danych i kodu, ktry odwouje si do tych struktur. Ten rodzaj integracji ma form obiektw.

Typy struktur danych zintegrowanych


w ten sposb z kodem nazywane s
klasami.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Jzyki programowania obiektowego


To co cechuje jezyki programowania obiektowego (jzyki obiektowe),
to to e wspomagaj i wymuszaj stosowanie metod podejcia obiektowego.
Najistotniejsz cech podejcia obiektowego jest integracja struktur
danych i kodu, ktry odwouje si do tych struktur. Ten rodzaj integracji ma form obiektw.

Typy struktur danych zintegrowanych


w ten sposb z kodem nazywane s
klasami.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Warto wiedzie
Oglna koncepcja podejcia obiektowego do programowania powstaa
na przeomie lat 50-tych i 60-tych w MIT.
W bardziej formalnej postaci koncepcje te zostay wprowadzone w
jzyku Simula 67 w latach 60-tych.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Jzyki obiektowe
Przykady jzykw obiektowych:
Smalltalk

Ruby

Programowanie obiektowe

Podejcie obiektowe
Jzyki programowania

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

C++

Jzyk C++ nie jest jzykiem obiektowym!

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Od koncepcji do paradygmatu
Podejcie obiektowe do programowania wyznacza
sposb patrzenia na struktury danych i przepyw
sterowania w programie oraz wykonywanie caego
programu.
Wprowadza ono pewien zbir poj i koncepcji,
ktry determinuje sposb rozumienia procesu
programowania.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Od koncepcji do paradygmatu
Podejcie obiektowe do programowania wyznacza
sposb patrzenia na struktury danych i przepyw
sterowania w programie oraz wykonywanie caego
programu.
Wprowadza ono pewien zbir poj i koncepcji,
ktry determinuje sposb rozumienia procesu
programowania.

Ten zbir poj i koncepcji odnoszcy si do


programowania okrelany jest mianem
paradygmatu programowania.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne
Programowanie modularne
Programowanie imperatywne
Programowanie obiektowe
Programowanie uoglnione
Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne zaleca dzielenie programu na
procedury i nie wykorzystywanie zmiennych globalnych.
Programowanie strukturalne
Programowanie modularne
Programowanie imperatywne
Programowanie obiektowe
Programowanie uoglnione
Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne wywoywanie procedur powinno
tworzy hierarchiczn struktur z wykorzystanie instrukcji
warunkowych i ptli. Zakazuje si uywania instrukcji goto.

Programowanie modularne
Programowanie imperatywne
Programowanie obiektowe
Programowanie uoglnione
Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne
Programowanie modularne zaleca stosowanie moduw
grupujcych zbiory procedur.

Programowanie imperatywne
Programowanie obiektowe
Programowanie uoglnione
Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne
Programowanie modularne
Programowanie imperatywne opisuje proces wykonywania
programu jako sekwencj instrukcji zmieniajcych stan programu.

Programowanie obiektowe
Programowanie uoglnione
Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne
Programowanie modularne
Programowanie imperatywne
Programowanie obiektowe definiuje program jak zbir obiektw.
Ich istot jest czenie stanu i zachowania. Program to zbir
obiektw komunikujcych si midzy sob w celu wykonania zadania.

Programowanie uoglnione
Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne
Programowanie modularne
Programowanie imperatywne
Programowanie obiektowe
Programowanie uoglnione kadzie nacisk na ogln konstrukcj
algorytmu bez koniecznoci znajomoci typw danych, np. sortowanie.

Programowanie sterowane zdarzeniami

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przykadowe paradygmaty programowania


Programowanie proceduralne
Programowanie strukturalne
Programowanie modularne
Programowanie imperatywne
Programowanie obiektowe
Programowanie uoglnione
Programowanie sterowane zdarzeniami opis programu
uwypuklajcy przekazywanie sterowania midzy poszczeglnymi
moduami. Odnosi si on przede wszystkim do rodowisk
wieloprocesorowych. Jednak nie tylko. Przykadem s okienkowe
systememy graficzne, np. system X-Window.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Jzyki programowania
Jzyki programowania mog wspiera jednoczenie wiele paradygmatw programowania.

Czyste jzyki obiektowe wspieraj zasadniczo tylko paradygmat


programowania obiektowego.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Jzyki programowania
Jzyki programowania mog wspiera jednoczenie wiele paradygmatw programowania.

Czyste jzyki obiektowe wspieraj zasadniczo tylko paradygmat


programowania obiektowego.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

C++

Jzyk C++ jest jzykiem hybrydowym!

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Po co to wszystko?

Dlaczego powstaj nowe jzyki?

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrzenie rozwizania i przestrzenie problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Co si dzieje, gdy zabraknie zgodnoci


Mars Climate Orbiter
Terminarz
Data startu:
Osignicie celu:

11 grudnia 1998
wrzesie 1999

Cel misji

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

Badanie klimatu Marsa jego atmosfery i


zmian na powierzchni. Mia rwnie suy
jako satelita komunikacyjny na potrzeby
programu Mars Surveyor 98 oraz Mars Polar
Lander.

Sonda Mars Climate Orbiter za bardzo zbliya si do Marsa i wesza w grne warstwy jego
atmosfery, co skutkowao jej zniszczeniem.
Bezporedni przyczyn okazao si przyjcie zych jednostek. Oprogramowanie komputera
pokadowego generowao dane w jednostkach imperialnych zamiast w jednostkach SI. To, e
maj to by jednostki SI byo uzgodnione w kontrakcie midzy NASA i firm Lockheed
producentem sondy.
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Zastanwmy si ...

Czy C++ jest lepszym jzykiem ni C?

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrze rozwizana i przestrze problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrze rozwizana i przestrze problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrze rozwizana i przestrze problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrze rozwizana i przestrze problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Przestrze rozwizana i przestrze problemu

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Podejcie obiektowe
Jzyki programowania

Konkluzja

Ani jzyk C ani te C++ nie jest ani generalnie gorszy ani te
generalnie lepszy. Ocena jzyka zaley od problemu, dla ktrego
chcemy stworzy model implementacji rozwizania (program
komputerowy). Dopiero w tym kontekcie mona uzasadnia
wybr jzyka programowania.
Dotyczy to rwnie wszystkich innych jzykw programowania.

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

C++ nie jest nadzbiorem C


Deklaracja staych. Zachowanie zgodnoci wymaga jawnego dowizania.
ANSI C: const int Zm=23; extern const int Zm=23;
ANSI/ISO C++: const int Zm=23; static const int Zm=23;
Rozmiary staych 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: rwnowana extern int fun(...).
ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

C++ nie jest nadzbiorem C


Deklaracja staych. Zachowanie zgodnoci wymaga jawnego dowizania.
ANSI C: const int Zm=23; extern const int Zm=23;
ANSI/ISO C++: const int Zm=23; static const int Zm=23;
Rozmiary staych 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: rwnowana extern int fun(...).
ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

C++ nie jest nadzbiorem C


Deklaracja staych. Zachowanie zgodnoci wymaga jawnego dowizania.
ANSI C: const int Zm=23; extern const int Zm=23;
ANSI/ISO C++: const int Zm=23; static const int Zm=23;
Rozmiary staych 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: rwnowana extern int fun(...).
ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

C++ nie jest nadzbiorem C


Deklaracja staych. Zachowanie zgodnoci wymaga jawnego dowizania.
ANSI C: const int Zm=23; extern const int Zm=23;
ANSI/ISO C++: const int Zm=23; static const int Zm=23;
Rozmiary staych 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: rwnowana extern int fun(...).
ANSI/ISO C++: extern int fun(void).

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Wywietlenie prostego komunikatu


Jzyk C
#include

<stdio.h>

Jzyk C++
#include

int main( )
{
printf(Hejka!!!\n);
return 0;
}

<iostream>

int main( )
{
std::cout << Hejka!!!\n;
}

Funkcja main w jzyku C++ domylnie zwraca warto 0. Operacje


wyjcia s realizowane na obiekcie cout z wykorzystaniem przecienia
operatora lewostronnego przesunicia bitowego <<

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Wywietlenie prostego komunikatu


Jzyk C
#include

<stdio.h>

Jzyk C++
#include

int main( )
{
printf(Hejka!!!\n);
return 0;
}

<iostream>

int main( )
{
std::cout << Hejka!!! << std::endl;
}

Funkcja main w jzyku C++ domylnie zwraca warto 0. Operacje


wyjcia s realizowane na obiekcie cout z wykorzystaniem przecienia
operatora lewostronnego przesunicia bitowego <<

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Wywietlenie prostego komunikatu


Jzyk C
#include

<stdio.h>

Jzyk C++
#include <iostream>
using namespace std;

int main( )
{
printf(Hejka!!!\n);
return 0;
}

int main( )
{
cout << Hejka!!!
}

<< endl;

Uycie dyrektyw using namespace pozwala pomin przedrostek


przestrzeni nazw std

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Odpowiednio plikw nagwkowych dla C i C++


<math.h>
<stdio.h>
<ctype.h>
<stdlib.h>
<string.h>

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Odpowiednio plikw nagwkowych dla C i C++


<math.h>

<stdio.h>
<ctype.h>
<stdlib.h>
<string.h>

Programowanie obiektowe

<cmath>

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Odpowiednio plikw nagwkowych dla C i C++


<math.h>

<cmath>

<stdio.h>

<cstdio>

<ctype.h>

<cctype>

<stdlib.h>

<cstdlib>

<string.h>

<cstring>

Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Rozszerzenia plikw C++

Nie ma jednej ustalonej konwencji.


Programowanie obiektowe

....

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Rozszerzenia plikw C++

.H

.C

Najczciej spotykane s:
Programowanie obiektowe

...

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Rozszerzenia plikw C++

.H

.C

.hh

.cc

Najczciej spotykane s:
Programowanie obiektowe

..

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Rozszerzenia plikw C++

.H

.C

.hh

.cc

.hpp

.cpp

Najczciej spotykane s:
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Rozszerzenia plikw C++

.H

.C

.hh

.cc

.hpp

.cpp

.cxx

.hxx

Najczciej spotykane s:
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Kilka przykadowych rnic


Rnice w zapisie podstawowych elementw programu
Pliki nagwkowe funkcji z jzyka C
Konwencje nazw plikw rdowych dla jzyka C++

Rozszerzenia plikw C++

.H

.C

.hh

.cc

.hpp
.hxx

.cpp
.cxx

Mona rwnie stosowa konwencje mieszane.


Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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
}

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);

Programowanie obiektowe

....

e
e
a
b

a
a
b
e

b
b
e
a

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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
}

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);

Programowanie obiektowe

e
e
a
b

a
a
b
e

b
b
e
a

a+b=?
...

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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
}

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);

Programowanie obiektowe

e
e
a
b

a
a
b
e

b
b
e
a

a+b=?
..

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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
}

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);

Programowanie obiektowe

e
e
a
b

a
a
b
e

b
b
e
a

a+b=?
.

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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);

Programowanie obiektowe

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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 dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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];
}
Czy s jakie ograniczenia na

int main( )
{
Symbol
}

definiowanie funkcji operatorowych?

y = a, x = b, wynik;

wynik = y + x;

Tabliczka dziaania
+
e
a
b

e
e
a
b

a
a
b
e

b
b
e
a

a+b= e
Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek 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];
Tabliczka dziaania
Nie
} moemy definiowa funkcji operatorowych. gdy ich wszystkie parametry s typw
+ e a b
wbudowanych takich jak float, int, itd. np.
e e a b
operator
int int
main(
) + (int arg1, float arg2)
a
a b e
{ {
Symbol
y
=
a,
x
=
b,
wynik;
b b e a
...
}

} wynik

= y + x;

a+b= e

Dla tych typw definicje tych operacji s ju wbudowane w kompilator.


Programowanie obiektowe

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

To samo na kilka sposobw


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

e
e
a
b

a
a
b
e

b
b
e
a

a+b=e

}
Programowanie obiektowe

....

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

To samo na kilka sposobw


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);

e
e
a
b

a
a
b
e

b
b
e
a

a+b=e

}
Programowanie obiektowe

...

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

To samo na kilka sposobw


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);


wynik = operator+ (y, x);

e
e
a
b

a
a
b
e

b
b
e
a

a+b=e

}
Programowanie obiektowe

..

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

To samo na kilka sposobw


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);


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

a
a
b
e

b
b
e
a

a+b=e

}
Programowanie obiektowe

e
e
a
b

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

To samo na kilka sposobw


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = Dodaj(y, x);


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

a
a
b
e

b
b
e
a

a+b=e

}
Programowanie obiektowe

e
e
a
b

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

czno dziaania porzdek wykonywania operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

e
e
a
b

a
a
b
e

a+b+a=?

}
Programowanie obiektowe

....

b
b
e
a

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

czno dziaania porzdek wykonywania operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = y + x + y;

e
e
a
b

a
a
b
e

a+b+a=?

}
Programowanie obiektowe

...

b
b
e
a

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

czno dziaania porzdek wykonywania operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = (y + x) + y;

e
e
a
b

a
a
b
e

a+b+a=?

}
Programowanie obiektowe

..

b
b
e
a

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

czno dziaania porzdek wykonywania operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

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

e
e
a
b

a
a
b
e

a+b+a=?

}
Programowanie obiektowe

b
b
e
a

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

czno dziaania porzdek wykonywania operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = (y + x) + y;
wynik = operator+ (operator+ (y ,x), y );
wynik = Dodaj(Dodaj(x, y), y);
}
Programowanie obiektowe

e
e
a
b

a
a
b
e

a+b+a=?
.

b
b
e
a

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

Jawna zmiana porzdku wykonywanych operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = y + (x + y);

e
e
a
b

a
a
b
e

b
b
e
a

a + (b + a) = ?

}
Programowanie obiektowe

....

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

Jawna zmiana porzdku wykonywanych operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

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

e
e
a
b

a
a
b
e

b
b
e
a

a + (b + a) = ?

}
Programowanie obiektowe

...

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

Jawna zmiana porzdku wykonywanych operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = y + (x + y);
wynik = operator+ (y, operator+ (x ,y) );
wynik = Dodaj(y , Dodaj(x, y) );
}
Programowanie obiektowe

e
e
a
b

a
a
b
e

b
b
e
a

a + (b + a) = ?
..

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

Jawna zmiana porzdku wykonywanych operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = y + (x + y);
wynik = operator+ (y, operator+ (x ,y) );
wynik = Dodaj(y , Dodaj(x, y) );
}
Programowanie obiektowe

e
e
a
b

a
a
b
e

b
b
e
a

a + (b + a) = ?
.

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Operatory jako funkcje


czno operatorw i porzdek wykonywania operacji

Jawna zmiana porzdku wykonywanych operacji


enum
...

Symbol { e, a, b };

Symbol Dodaj( Symbol x, Symbol y );


Symbol operator + ( Symbol x, Symbol y );
...
int main( )
{
Symbol

Tabliczka dziaania
+
e
a
b

y = a, x = b, wynik;

wynik = y + (x + y);
wynik = operator+ (y, operator+ (x ,y) );
wynik = Dodaj(y , Dodaj(x, y) );
}
Programowanie obiektowe

e
e
a
b

a
a
b
e

b
b
e
a

a + (b + a) = ?
.

Organizacja kursu
Programowanie obiektowe
Jzyk C i C++ najistotniejsze rnice
Przecianie operatorw

Koniec prezentacji
Dzikuj za uwag

Programowanie obiektowe

Organizacja kursu, paradygmaty, oglnie o C i C++

You might also like