Bogdan Kreczmer. Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Podobne dokumenty
Podejście obiektowe wprowadzenie

Podejście obiektowe - podstawowe pojęcia

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

Szablony funkcji i szablony klas

Geneza C++, manipulatory

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów szablony funkcji

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

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

Wprowadzenie do szablonów szablony funkcji

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

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Schemat konstrukcja pliku Makefile

Zadanie 2: Arytmetyka symboli

Praca z aplikacją designer

Wyliczanie wyrażenia obiekty tymczasowe

Pola i metody statyczne

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Qt sygnały i designer

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

Przesłanianie nazw, przestrzenie nazw

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

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Podstawy algorytmiki i programowania - wykład 4 C-struktury

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Referencje do zmiennych i obiektów

TEMAT : KLASY DZIEDZICZENIE

Geneza C++, hermetyzacja struktur danych

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

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

Wprowadzenie do UML, przykład użycia kolizja

Konstruktor kopiujacy

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

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

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

Wstęp do programowania

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Wstęp do Programowania 2

Szablon klasy std::vector

C-struktury wykład. Dorota Pylak

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

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

Programowanie - wykład 4

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Podstawy Programowania Obiektowego

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Przeciążanie operatorów

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

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Część 4 życie programu

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

Techniki Programowania wskaźniki

Hermetyzacja oraz pola i metody statyczne

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

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

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Dalmierze optyczne. Bogdan Kreczmer.

Funkcja (podprogram) void

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

dr inż. Jarosław Forenc

C-struktury wykład. Dorota Pylak

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

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

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

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

Wykład 5: Klasy cz. 3

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

Wyjątki (exceptions)

Zasoby, pliki graficzne

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

Zad. 5: Układ równań liniowych liczb zespolonych

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Przeciążenie (przeładowanie nazw) funkcji

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

Podstawy programowania skrót z wykładów:

Szablony klas, zastosowanie szablonów w programach

Struktury Struktura polami struct struct struct struct

PARADYGMATY PROGRAMOWANIA Wykład 3

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie w języku C++

Diagramy UML, przykład problemu kolizji

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

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

Style programowania, geneza języka C++

Język C++ zajęcia nr 2

Podstawy Programowania

Projektowanie klas c.d. Projektowanie klas przykład

PROGRAMOWANIE w C prolog

Style programowania - krótki przeglad

Języki i metodyka programowania. Wprowadzenie do języka C

Transkrypt:

Podejście obiektowe, przeciążenia operatorów, referencje Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową. Podejście obiektowe, przeciążenia operatorów, referencje

Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net

Spis treści Podejście obiektowe 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję

Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania.

Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem.

Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem. Wyróżnianie obiektów może być dokonywane na różne sposoby. Oparte jest ono na obserwacji i wcześniejszej wiedzy.

Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem. Wyróżnianie obiektów może być dokonywane na różne sposoby. Oparte jest ono na obserwacji i wcześniejszej wiedzy. Obiektowi lub obiektom jesteśmy w stanie przypisać pojęcia. Proces ten nazywa się postrzeganiem.

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty...

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty...

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty i przypisać im pojęcia.

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Wyodrębnieniu może podlegać zestaw elementów, jako osobna całość.

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Pojęcie odnosi się wówczas do zbioru elementów między którymi zachodzą odpowiednie relacje.

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Każdemu z elementów może być osobno wyróżniony poprzez przypisanie mu indywidualnego pojęcia.

Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Znajdując cechy wspólne wszystkich elementów możemy również przyporządkować pojęcie ich zbiorowi.

Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia.

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia. Pojęcie jest wyobrażeniem lub oznaczeniem, które stosujemy do rzeczy lub wyobrażeń abstrakcyjnych.

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia. Pojęcie jest wyobrażeniem lub oznaczeniem, które stosujemy do rzeczy lub wyobrażeń abstrakcyjnych. Przypisywanie pojęć jest możliwe dzięki rozpoznaniu własności wspólnych dla reprezentantów zbiorów, do których stosuje się dane pojęcie.

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu.

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo spotkanie zakup wyjazd

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo spotkanie zakup wyjazd wzorowy nietypowy ikona

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego.

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego. Ekstensja jest zbiorem wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie.

Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego. Ekstensja jest zbiorem wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie. Trójka pojęciowa = (nazwa, intensja, ekstensja)

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja)

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja ekstensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania.

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania. ekstensja irb-6, IRB1400, Puma 560,...

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania. ekstensja irb-6, IRB1400, Puma 560,...

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,...

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,...

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,... Niektóre pojęcia mogą nie mieć swoich reprezentantów.

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja 40S25, 40S25,...

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja 40S25, 40S25,... Pojęcie może nie mieć swojej definicji. Przykład układu scalonego, którego dokumentacja i opis zostały zagubione.

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja ekstensja

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja ekstensja Osoba lub organizacja kupująca dobra lub usługi.

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient, Interesant nazwa Klient, Interesant intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient, Interesant nazwa Klient, Interesant intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego Pojęcia mogą mieć synonimy.

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. Aplikacja programowa, która żąda od innej aplikacji realizacji usług. ekstensja Jan Kowalski, Firma Jana Kowalskiego xclock, xterm,...

Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. Aplikacja programowa, która żąda od innej aplikacji realizacji usług. ekstensja Jan Kowalski, Firma Jana Kowalskiego xclock, xterm,... Pojęcia mogą mieć homonimy.

Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiekt?! Co to takiego???

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia.

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia. Pojęcie = robot przemysłowy

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia. Pojęcie = robot przemysłowy Obiekt = konkretny egzemplarz robota, np. robota IRB1400

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

Spis treści Podejście obiektowe Standardowe pliki nagłówkowe w C++ 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Wyświetlenie prostego komunikatu Standardowe pliki nagłówkowe w C++ Język C #include <stdio.h> Język C++ #include <iostream> int main( ) { printf( Hejka!!!\n ); return 0; } int main( ) { std::cout << Hejka!!!\n ; } Jedną z istotnych cech programów pisanych w języku C++ jest brak rozszerzeń w nazwach plików nagłówkowych.

Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C++ 1990: Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C++ 1990: Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C++ 1990: Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C++ 1990: Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C++ 1990: Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C++ 1990: Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

C++ ARM versus ANSI/ISO C++ Standardowe pliki nagłówkowe w C++ C++ ARM #include <iostream.h> int main( ) { cout << Hejka!!! << endl; return 0; } ANSI/ISO C++ #include <iostream> using namespace std; int main( ) { cout << Hejka!!! << endl; } Różnica w nazwach plików nagłówkowych umożliwiło środowisku programistów łagodne przejście z C++ARM do standardu ANSI/ISO C++.

Standardowe pliki nagłówkowe w C++ Odpowiedniość plików nagłówkowych dla C i C++ <math.h> <cmath> <stdio.h> <ctype.h> <stdlib.h> <string.h> Przypomnienie

Standardowe pliki nagłówkowe w 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> Przypomnienie

Standardowe pliki nagłówkowe w C++ Rozszerzenia plików C++ Przypomnienie.H.C.hh.cc.hpp.cpp.hxx.cxx Nie ma jednej ustalonej konwencji.

Standardowe pliki nagłówkowe w C++ Rozszerzenia plików C++ Przypomnienie.H.C.hh.cc.hpp.cpp.hxx.cxx Można również stosować konwencje mieszane.

Standardowe pliki nagłówkowe w C++ Chronologia wprowadzanych standardów C++98 1998 (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. 2003 (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. 2007 (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. C++11 2011 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Standardowe pliki nagłówkowe w C++ Chronologia wprowadzanych standardów C++98 1998 (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. C++03 2003 (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. C++TR1 2007 (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. C++11 2011 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C++14 2014 usunięcie błędów i uzupełnienie wcześniejszego standardu. C++14 pełni rolę korekty do C++11. W niewielkim tylko stopniu rozszerzy koncepcje standardu C++11. C++17 2017 Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11.

Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C++14 2014 usunięcie błędów i uzupełnienie wcześniejszego standardu. C++14 pełni rolę korekty do C++11. W niewielkim tylko stopniu rozszerzy koncepcje standardu C++11. C++17 2017 Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11.

Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C++14 2014 usunięcie błędów i uzupełnienie wcześniejszego standardu. C++14 pełni rolę korekty do C++11. W niewielkim tylko stopniu rozszerzy koncepcje standardu C++11. C++17 2017 Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11. http://isocpp.org/std/status

Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ http://isocpp.org/std/status

Standard wykorzystywany na zajęciach Standardowe pliki nagłówkowe w C++ Obowiązuje nas: ISO C++14 g++ -c -Wall -pedantic -std=c++14 program.cpp

Standard wykorzystywany na zajęciach Standardowe pliki nagłówkowe w C++ Obowiązuje nas: ISO C++14 g++ -c -Wall -pedantic -std=c++14 program.cpp Należy jednak pamiętać, że implmenetacja standardu C++14 ma wciąż charakter eksperymentalny i nie jest pełna!

Spis treści Podejście obiektowe Przeciążenie (przeładowanie) funkcji 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach.

Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach. Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; }

Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach. Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; }

Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }

Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }

Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie?

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie Jak to rozumieć?

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność.

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (2) istniejącą zawartość wyładowujemy i na jej miejsce wprowadzamy nowy ładunek.

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie A to jak rozumić?

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar.

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.

Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność. Przeładowanie (2) istniejącą zawartość wyładowujemy i na jej miejsce wprowadzamy nowy ładunek. Przeciążenie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar. Przeciążenie (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.

Spis treści Podejście obiektowe Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; Tabliczka działania } + e a b int main( ) { Symbol } x = a, wynik; wynik = operator + (x, b); e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; Tabliczka działania } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Nie możemy return definiować TabliczkaDzialania[Arg1][Arg2]; funkcji operatorowych, gdy ich wszystkie Tabliczka parametry działania są typów wbudowanych } takich jak float, int, itd. np. + e a b int operator + (int arg1, float arg2) int main( ) e e a b { { a a b e Symbol... x = a, wynik; b b e a } wynik = x + b; } Dla tych typów definicje tych operacji są już wbudowane w kompilator. a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Uwaga: return Wbudowanych TabliczkaDzialania[Arg1][Arg2]; definicji operatorów dodawania nie możnatabliczka jawnie wywołać działania tak jak operacji } np. dla symboli, tzn. + e a b int Liczba main( = ) operator + (10, 2); { Symbol x = a, wynik; } wynik = x + b; e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Uwaga: return Wbudowanych TabliczkaDzialania[Arg1][Arg2]; definicji operatorów dodawania nie możnatabliczka jawnie wywołać działania tak jak operacji } np. dla symboli, tzn. + e a b int Liczba main( ) e e a b = operator + (10, 2); { a a b e Symbol x = a, wynik; b b e a } wynik = x + b; a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + b; x = a, wynik; + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + +b; x = a, wynik; + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = x + (+b); + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) {??? } int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) { return Arg; } int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) { return Arg; } int main( ) { Symbol } wynik = x + +b; x = a, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + b; x = a, wynik; + e a b e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) {??? Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e + e = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e + e = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { a +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { a + b = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { b +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { b + a = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania return ElemOdwrotny[Arg]; } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania return ElemOdwrotny[Arg]; } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b = a + a = b

Jeszcze raz dodawanie Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b };... Symbol Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); wynik = operator+ (x, b); wynik = x + b; + e a b e e a b a a b e b b e a a + b = e

Jeszcze raz dodawanie Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b };... Symbol Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol x = a, wynik; + e a b e e a b a a b e b b e a } wynik = x + b; a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; Tabliczka działania + e a b e e a b a a b e b b e a } wynik += b; a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); { return Arg1 = TabliczkaDzialania[Arg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); { return Arg1 = TabliczkaDzialania[Arg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol *parg1, Symbol Arg2 ); { return *parg1 = TabliczkaDzialania[*pArg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(&wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol *parg1, Symbol Arg2 ); { return *parg1 = TabliczkaDzialania[*pArg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(&wynik, b); operator+= (&wynik, b); &wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Spis treści Podejście obiektowe Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje