organizacja kursu, paradygmaty, ogólnie o c i c++ · 2020. 3. 2. · geneza języka c++ 2 język c...

127
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 2021 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: others

Post on 27-Jan-2021

3 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©2021 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. 13:15 – 15:15pt. 11:15 – 13:15

    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 programowaniaGeneza języka C++

    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, Josée 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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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.

    Obiekt jest instancją klasy.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    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.

    Obiekt jest instancją klasy.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    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.

    Obiekt jest instancją klasy.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    C++

    Jakim językiem jest C++?

    ?

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    Bjarne Stroustrup

    Bjarne Stroustrup — (ur. 30.12.1950 – Århus, Dania) jest twórcąjęzyka C++ i nadal aktywnie uczestniczy w jego dalszym rozwoju.Inspiracją do stworzenia tego typu języka były problemy i spostrze-żenia, których dokonał w trakcie swoich prac nad doktoratem wUniwersytecie Cambridge.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Tło akcji

    Bezpośrednim przyczynkiem do powstania koncepcji języka C++były prace Stroustrupa w Cambridge nad doktoratem. W trakcieswoich prac miał zbadać różne organizacje systemowego oprogra-mowania w systemach rozproszonych.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Zdarzenia

    Udana (w sensie konstrukcji aplikacji) realizacja symulatorasystemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasyw Simuli było bardzo pomocne na etapie projektu iimplmentacji.Poważne problemy związne z wydajnością programównapisanego w Simuli zmusza do poszukiwania bardziejwydajnego narzędzia.Traumatycznie bolesne doświadczenia związane zkoniecznością implementacji symulatora w oparciu o językBCPL. Osiągnięta została bardzo dobra wydajność kosztemwielu problemów przy realizacji implementacji.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Zdarzenia

    Udana (w sensie konstrukcji aplikacji) realizacja symulatorasystemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasyw Simuli było bardzo pomocne na etapie projektu iimplmentacji.Poważne problemy związne z wydajnością programównapisanego w Simuli zmusza do poszukiwania bardziejwydajnego narzędzia.Traumatycznie bolesne doświadczenia związane zkoniecznością implementacji symulatora w oparciu o językBCPL. Osiągnięta została bardzo dobra wydajność kosztemwielu problemów przy realizacji implementacji.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Zdarzenia

    Udana (w sensie konstrukcji aplikacji) realizacja symulatorasystemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasyw Simuli było bardzo pomocne na etapie projektu iimplmentacji.Poważne problemy związne z wydajnością programównapisanego w Simuli zmusza do poszukiwania bardziejwydajnego narzędzia.Traumatycznie bolesne doświadczenia związane zkoniecznością implementacji symulatora w oparciu o językBCPL. Osiągnięta została bardzo dobra wydajność kosztemwielu problemów przy realizacji implementacji.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Epilog

    Po zakończeniu prac nad doktoratem Stroustrup postanawia stwo-rzyć język programowania, który łączyłby koncepcje klas z Simulioraz elastyczność tego języka z efektywnością kodu języka BCPL.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Niektóre spostrzeżenia

    Kompilator Simuli dobrze wychwytywał błędy typu. Błędy teprzeważnie były albo wynikiem “głupich” pomyłek w trakcieprogramowania albo też potknięć koncepcyjnych.Ten drugi rodzaj błędów ma wręcz fundamentalne znaczeniedla procesu projektowania i pisania programownia (autor kursupozwolił sobie tę uwagę wzmocnić).

    Żaden inny prosty system sprawdzania ścisłej zgodności typównie dostarczył tego rodzaju wsparcia.Przykładem może być system Pascala. Sprawiał on więcejkłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacjiprojektu, aby dostosować go do warunków narzuconych przezimplementację (co nie zmienia faktu, że jest to bardzo dobry język dlapoczątkowego kursu nauki informatyki – uwaga autora kursu).

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Niektóre spostrzeżenia

    Kompilator Simuli dobrze wychwytywał błędy typu. Błędy teprzeważnie były albo wynikiem “głupich” pomyłek w trakcieprogramowania albo też potknięć koncepcyjnych.Ten drugi rodzaj błędów ma wręcz fundamentalne znaczeniedla procesu projektowania i pisania programownia (autor kursupozwolił sobie tę uwagę wzmocnić).

    Żaden inny prosty system sprawdzania ścisłej zgodności typównie dostarczył tego rodzaju wsparcia.Przykładem może być system Pascala. Sprawiał on więcejkłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacjiprojektu, aby dostosować go do warunków narzuconych przezimplementację (co nie zmienia faktu, że jest to bardzo dobry język dlapoczątkowego kursu nauki informatyki – uwaga autora kursu).

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Niektóre spostrzeżenia

    Kompilator Simuli dobrze wychwytywał błędy typu. Błędy teprzeważnie były albo wynikiem “głupich” pomyłek w trakcieprogramowania albo też potknięć koncepcyjnych.Ten drugi rodzaj błędów ma wręcz fundamentalne znaczeniedla procesu projektowania i pisania programownia (autor kursupozwolił sobie tę uwagę wzmocnić).

    Żaden inny prosty system sprawdzania ścisłej zgodności typównie dostarczył tego rodzaju wsparcia.Przykładem może być system Pascala. Sprawiał on więcejkłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacjiprojektu, aby dostosować go do warunków narzuconych przezimplementację (co nie zmienia faktu, że jest to bardzo dobry język dlapoczątkowego kursu nauki informatyki – uwaga autora kursu).

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Niektóre spostrzeżenia

    Kompilator Simuli dobrze wychwytywał błędy typu. Błędy teprzeważnie były albo wynikiem “głupich” pomyłek w trakcieprogramowania albo też potknięć koncepcyjnych.Ten drugi rodzaj błędów ma wręcz fundamentalne znaczeniedla procesu projektowania i pisania programownia (autor kursupozwolił sobie tę uwagę wzmocnić).

    Żaden inny prosty system sprawdzania ścisłej zgodności typównie dostarczył tego rodzaju wsparcia.Przykładem może być system Pascala. Sprawiał on więcejkłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacjiprojektu, aby dostosować go do warunków narzuconych przezimplementację (co nie zmienia faktu, że jest to bardzo dobry język dlapoczątkowego kursu nauki informatyki – uwaga autora kursu).

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Niektóre spostrzeżenia

    Pojęcie klasy było zasadniczym elementem różniącym„sztywny” Pascal od „elastycznej” Simuli.

    Wyczerpujące sprawdzanie zgodności typów w Simulisprawiało, że liczba problemów i błędów nie wzrastała szybciejniż liniowo wraz ze wzrostem programu.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Niektóre spostrzeżenia

    Pojęcie klasy było zasadniczym elementem różniącym„sztywny” Pascal od „elastycznej” Simuli.

    Wyczerpujące sprawdzanie zgodności typów w Simulisprawiało, że liczba problemów i błędów nie wzrastała szybciejniż liniowo wraz ze wzrostem programu.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Ważniejsze daty

    1979 – (Maj) Początek prac na C z Klasami. (Październik) Od-danie do użytku pierwszej implementacji tego języka.

    1983 – (Sierpień) Oddanie do użytku pierwszej implementacji ję-zyka C++. (Grudzień) Powstanie nazwy C++.

    1985 – (Luty) Powstanie pierwszej wersji języka C++ (wersjaE) do użytku zewnętrznego. (Październik) Ukazanie siępierwszego wydania książki “Język C++”.

    1987 – (Grudzień) Ukazanie się kompilatora GNU C++.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Ważniejsze daty

    1989 – (Grudzień) Powstanie zespołu ANSI X3J16 do spraw nor-malizacji języka C++.

    1990 – (Maj) Powstawnie w firmie Borland pierwszej implemen-tacji języka C++.Lipiec: Przyjęcie koncepcji szablonów.Listopad: Przyjęcie koncepcji wyjątków.

    1990 – Wydanie książki: Ellis Margaret A., Stroustrup B.„The Annotated C++ Reference Manual ”,Reading, MA, Addison-Wesley 1990.Stał się on nieformalnym standardem języka, określanegojako C++ ARM.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Ważniejsze daty

    1992 – (Luty) Powstanie pierwszej implementacji języka C++(zawierającej szablony i wyjątki) w firmie DEC. (Marzec)Powstanie pierwszej implementacji języka C++ w firmieMicrosoft. (Maj) Powstanie pierwszej implementacji ję-zyka C++ w firmie IBM.

    1993 – Marzec: Przyjęcie koncepcji identyfikowania typu pod-czas wykonywania programu.Lipiec: Przyjęcie koncepcji przestrzeni nazw.

    1998 – Przyjęcie standardu ANSI/ISO języka C++.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Genealogia

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dalszy rozwój i wprowadzane standardy

    1998 – (ISO/IEC 14882:2011) Przyjęcie standarduANSI/ISO języka C++.

    2003 – (ISO/IEC 14882:2003) Korekcja wcześniejszegostandardu.

    2007 – (ISO/IEC TR 19768:2007) Oparty na technicznymraporcie „Library Technical Report 1 ”, który wpro-wadzał rozszerzenia do biblioteki standardowej.

    2011 – (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowystandard języka C++ wcześniej roboczo określanyjako C++0x.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dalszy rozwój i wprowadzane standardy

    1998 –C++98 (ISO/IEC 14882:2011) Przyjęcie standarduANSI/ISO języka C++.

    2003 –C++03 (ISO/IEC 14882:2003) Korekcja wcześniejszegostandardu.

    2007 –C++TR1 (ISO/IEC TR 19768:2007) Oparty na technicznymraporcie „Library Technical Report 1 ”, który wpro-wadzał rozszerzenia do biblioteki standardowej.

    2011 –C++11 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy stan-dard języka C++ wcześniej roboczo określany jakoC++0x.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Mapa drogowa rozwoju C++

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Wzajemne powiązania

    Kilka faktów:Słowo kluczowe class pochodzi z Simuli (podobnie jaknotacja wskaźnika this).

    Zapis funkcja(void) w ANSI C pochodzi z języka C zKlasami.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym – nie ma wewnętrznychograniczeń wykluczających możliwość napisania jakiegośrodzaju programu, tzn. można korzystać w nim z większościtechnik programowania.

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym – semantyka języka znajduje się na„niskim poziomie”, tzn. podstawowe pojęcia językaodzwierciedlają podstawowe pojęcia tradycyjnego komputera.

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym – implementacje tegojęzyka istnieją zarówno dla mikrokomputerów jak też dladużych superkomputerów.

    C jest językiem przenośnym

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    Dlaczego C

    Dlatego żeC jest językiem elastycznym

    C jest językiem wydajnym

    C jest językiem szeroko dostępnym

    C jest językiem przenośnym – programy napisane w Czazwyczaj nie można automatycznie przenosić z jednegosystemu operacyjnego do drugiego. Jednak przenośność zuwzględnieniem odpowiednich uwarunkowań jest możliwa.

    Programowanie obiektowe

  • Organizacja kursuProgramowanie obiektowe

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

    Podejście obiektoweJęzyki programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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 programowaniaGeneza języka C++

    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

    int main( ){

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

    }

    #include

    int main( ){

    std::cout

  • 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

    int main( ){

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

    }

    #include

    int main( ){

    std::cout

  • 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

    int main( ){

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

    }

    #include using namespace std;

    int main( ){

    cout

  • 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++

    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++

    −→

    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++

    −→

    −→

    −→

    −→

    −→

    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++

    Organizacja kursuProgramowanie obiektowePodejscie obiektoweJezyki programowaniaGeneza jezyka C++

    Jezyk C i C++ – najistotniejsze rózniceKilka przykładowych róznicRóznice w zapisie podstawowych elementów programuPliki nagłówkowe funkcji z jezyka CKonwencje nazw plików zródłowych dla jezyka C++

    Przeciazanie operatorówOperatory jako funkcjeŁacznosc operatorów i porzadek wykonywania operacji