=1=Organizacja kursu, paradygmaty, ogólnie o C i...
Transcript of =1=Organizacja kursu, paradygmaty, ogólnie o C i...
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 .