=1=Podejscie obiektowe, przeciazenia operatorów, referencje

Transkrypt

=1=Podejscie obiektowe, przeciazenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Podejście obiektowe, przeciążenia operatorów,
referencje
Bogdan Kreczmer
[email protected]
Zakład Podstaw Cybernetyki i Robotyki
Instytut Informatyki, Automatyki i Robotyki
Politechnika Wrocławska
Kurs: Programowanie obiektowe
c
Copyright2016
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ą.
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Niniejsza prezentacja została wykonana przy użyciu systemu składu LATEX oraz stylu beamer, którego autorem
jest Till Tantau.
Strona domowa projektu Beamer:
http://latex-beamer.sourceforge.net
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Programowanie obiektowe oparte jest na podejściu obiektowym do
analizy problemu oraz syntezy i implementacji jego rozwiązania.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Programowanie obiektowe 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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Programowanie obiektowe 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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Programowanie obiektowe 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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Postrzeganie
Programowanie obiektowe
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Postrzeganie
Programowanie obiektowe
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty . . .
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty . . .
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty i przypisać im
pojęcia.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Wyodrębnieniu może podlegać zestaw elementów, jako osobna całość.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Pojęcie odnosi się wówczas do zbioru elementów między którymi zachodzą odpowiednie relacje.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Każdemu z elementów może być osobno wyróżniony poprzez przypisanie mu indywidualnego pojęcia.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Postrzeganie
Znajdując cechy wspólne wszystkich elementów możemy również przyporządkować
pojęcie ich zbiorowi.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia
abstrakcyjnego jest przypisanie mu pewnego pojęcia.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
Programowanie obiektowe
zdarzenia
inne
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
pojazd
budynek
atom
Programowanie obiektowe
zdarzenia
inne
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
pojazd
budynek
atom
czas
poprawność
firma
Programowanie obiektowe
zdarzenia
inne
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
pojazd
budynek
atom
czas
poprawność
firma
posiadanie
przynależność
małżeństwo
Programowanie obiektowe
zdarzenia
inne
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
pojazd
budynek
atom
czas
poprawność
firma
zdarzenia
posiadanie
spotkanie
przynależność zakup
małżeństwo wyjazd
Programowanie obiektowe
inne
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
pojazd
budynek
atom
czas
poprawność
firma
zdarzenia
posiadanie
spotkanie
przynależność zakup
małżeństwo wyjazd
Programowanie obiektowe
inne
wzorowy
nietypowy
ikona
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Czym jest pojęcie
Termin pojęcie zawiera:
intensję – treść pojęcia
ekstensję – zakres pojęcia
Programowanie obiektowe
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Czym jest pojęcie
Termin pojęcie zawiera:
intensję – treść pojęcia
ekstensję – zakres pojęcia
Programowanie obiektowe
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Czym jest pojęcie
Termin pojęcie zawiera:
intensję – treść pojęcia
ekstensję – zakres pojęcia
Programowanie obiektowe
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Czym jest pojęcie
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)
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Robot przemysłowy
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Robot przemysłowy
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Robot przemysłowy
nazwa
Robot przemysłowy
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
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.
iRb-6, IRB1400,
Puma 560, . . .
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
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.
iRb-6, IRB1400,
Puma 560, . . .
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Idealny człowiek
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Idealny człowiek
nazwa
Idealny człowiek
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Idealny człowiek
nazwa
Idealny człowiek
intensja
ekstensja
Uczciwy, rzetelny, . . .
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Idealny człowiek
nazwa
Idealny człowiek
intensja
ekstensja
Uczciwy, rzetelny, . . .
Programowanie obiektowe
×
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
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.
Programowanie obiektowe
×
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
40S25
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
40S25
nazwa
40S25
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
40S25
nazwa
40S25
intensja
ekstensja
×
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
40S25
nazwa
40S25
intensja
ekstensja
×
Programowanie obiektowe
40S25, 40S25, . . .
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Jan Kowalski,
Firma Jana Kowalskiego
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Jan Kowalski,
Firma Jana Kowalskiego
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient, Interesant
nazwa
Klient, Interesant
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Jan Kowalski,
Firma Jana Kowalskiego
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient, Interesant
nazwa
Klient, Interesant
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Jan Kowalski,
Firma Jana Kowalskiego
Pojęcia mogą mieć synonimy.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Jan Kowalski,
Firma Jana Kowalskiego
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Aplikacja programowa, która żąda od
innej aplikacji realizacji usług.
Jan Kowalski,
Firma Jana Kowalskiego
xclock, xterm, . . .
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Osoba lub organizacja kupująca dobra
lub usługi.
Aplikacja programowa, która żąda od
innej aplikacji realizacji usług.
Jan Kowalski,
Firma Jana Kowalskiego
xclock, xterm, . . .
Pojęcia mogą mieć homonimy.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Obiekty
Obiekt ?! Co to takiego ???
Programowanie obiektowe
Rozumienie świata
Pojęcie
Obiekty
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
Obiekty
Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Rozumienie świata
Pojęcie
Obiekty
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Wyświetlenie prostego komunikatu
Język C
#include
<stdio.h>
Język C++
#include
int main( )
{
printf(”Hejka!!!\n”);
return 0;
}
<iostream>
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Jak do tego doszło – Trochę historii
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++
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Jak do tego doszło – Trochę historii
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++
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Jak do tego doszło – Trochę historii
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++
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Jak do tego doszło – Trochę historii
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++
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Jak do tego doszło – Trochę historii
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++
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Jak do tego doszło – Trochę historii
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++
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
C++ ARM versus ANSI/ISO C++
C++ ARM
#include
<iostream.h>
int main( )
{
cout << ”Hejka!!!”
return 0;
}
<< endl;
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++.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Rozszerzenia plików C++ – Przypomnienie
∗.H
←→
∗.C
∗.hh
←→
∗.cc
∗.hpp ←→
∗.cpp
←→
∗.cxx
∗.hxx
Nie ma jednej ustalonej konwencji.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Rozszerzenia plików C++ – Przypomnienie
∗.H
←→
∗.C
∗.hh
←→
∗.cc
∗.hpp ←→
∗.hxx
←→
∗.cpp
∗.cxx
Można również stosować konwencje mieszane.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Dalszy rozwój
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Dalszy rozwój
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Dalszy rozwój
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
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Standard wykorzystywany na zajęciach
Obowiązuje nas: ISO C++11
g++ -c -Wall -pedantic -std=c++11 program.cpp
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Standardowe pliki nagłówkowe w C++
Standard wykorzystywany na zajęciach
Obowiązuje nas: ISO C++11
g++ -c -Wall -pedantic -std=c++11 program.cpp
Należy jednak pamiętać, że implmenetacja standardu C++11 ma
wciąż charakter eksperymentalny i nie jest pełna!
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Przeciążanie 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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Przeciążanie 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
}
Programowanie obiektowe
<< endl;
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Przeciążanie 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 << ”\””
}
Programowanie obiektowe
<< endl;
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Przeciążanie funkcji
Przykład:
void Wyswietl( float Liczba )
{
cout << ”Liczba: ” << Liczba
}
<< endl;
void Wyswietl( const char ∗ Napis )
{
cout << ”Napis: \”” << Napis << ”\””
}
void main( )
{
Wyswietl(123.14);
Wyswietl(”Jak dobrze wstać skoro świt.”);
}
Programowanie obiektowe
<< endl;
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Przeciążanie funkcji
Przykład:
void Wyswietl( float Liczba )
{
cout << ”Liczba: ” << Liczba
}
<< endl;
void Wyswietl( const char ∗ Napis )
{
cout << ”Napis: \”” << Napis << ”\””
}
void main( )
{
Wyswietl(123.14);
Wyswietl(”Jak dobrze wstać skoro świt.”);
}
Programowanie obiektowe
<< endl;
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Przeciążanie funkcji
Przykład:
void Wyswietl( float Liczba )
{
cout << ”Liczba: ” << Liczba
}
<< endl;
void Wyswietl( const char ∗ Napis )
{
cout << ”Napis: \”” << Napis << ”\””
}
void main( )
{
Wyswietl(123.14);
Wyswietl(”Jak dobrze wstać skoro świt.”);
}
Programowanie obiektowe
<< endl;
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Przeładowanie — Jak to rozumieć?
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Przeładowanie — (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Przeładowanie — (2) istniejącą zawartość wyładowujemy i na jej
miejsce wprowadzamy nowy ładunek.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Przeciążenie — A to jak rozumić?
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Przeciążenie — (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
Przeładowanie czy przeciążenie?
Przeciążenie — (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Przeciążenie (przeładowanie) funkcji
Nieszczęsne słowo: overload
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.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
enum
Symbol { e, a, b };
Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };
Symbol Dodaj( Symbol Arg1, Symbol Arg2 )
{
Tabliczka działania
}
int main( )
{
Symbol
}
x = a, wynik;
wynik = Dodaj(x, b);
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
enum
Symbol { e, a, b };
Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } };
Symbol Dodaj( Symbol Arg1, Symbol Arg2 )
{
Tabliczka działania
}
int main( )
{
Symbol
}
x = a, wynik;
wynik = Dodaj(x, b);
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
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);
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
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
}
+ e
e e
int main( )
a
a
{
Symbol x = a, wynik;
b b
}
wynik = operator + (x, b);
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
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
}
+ e
e e
int main( )
a
a
{
Symbol x = a, wynik;
b b
}
wynik = x + b;
działania
a
a
b
e
b
b
e
a
a+b=e
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
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 definiować
TabliczkaDzialania[Arg1][Arg2];
Nie możemy
funkcji operatorowych, gdy ich wszystkie
parametry
są typów
Tabliczka
działania
}
wbudowanych takich jak float, int, itd. np.
+ e a b
int operator + (int arg1, float arg2)
e e a b
int { main( )
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+
Programowanie obiektowe
b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
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];
Uwaga:
Wbudowanych
definicji operatorów dodawania nie możnaTabliczka
jawnie wywołać
tak jak
działania
}
operacji np. dla symboli, tzn.
+ e a b
e e a b
int Liczba
main( =
) operator + (10, 2);
a
a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + b;
a+b=e
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Arytmetyka symboli
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];
Uwaga:
Wbudowanych
definicji operatorów dodawania nie możnaTabliczka
jawnie wywołać
tak jak
działania
}
operacji np. dla symboli, tzn.
+ e a b
h
h
hh
(
(
(
hh
(
(
h
(
(
(
h
h
h
(
(
(
h
h
hh
(
e e a b
h+
=
operator
(10,
(
((
h
h
hh
(
(
((
h
hh
int Liczba
main( (
)((
(
h 2);
(
a
a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + b;
a+b=e
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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;
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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);
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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);
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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);
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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);
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora +
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 + +b;
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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;
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = ?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przeciążanie operatora −
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
e e a b
int main( )
a a b e
{
Symbol x = a, wynik;
b b e a
}
wynik = x + −b;
Programowanie obiektowe
a + −b = a + a = b
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Jeszcze raz dodawanie
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;
}
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Jeszcze raz dodawanie
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 = x + b;
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
}
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
wynik += b;
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
}
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
wynik += b;
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
}
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
wynik += b;
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
}
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
wynik += b;
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
}
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
}
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
}
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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;
}
Programowanie obiektowe
Tabliczka działania
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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 );
{
Arg1 = TabliczkaDzialania[Arg1][Arg2];
}
Tabliczka
...
int main( )
+ e
{
e e
Symbol wynik = a;
a a
DodajIPodstaw(wynik, b);
b b
operator+= (wynik, b);
wynik += b;
a+b
}
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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 );
{
Arg1 = TabliczkaDzialania[Arg1][Arg2];
}
Tabliczka
...
int main( )
+ e
{
e e
Symbol wynik = a;
a a
DodajIPodstaw(wynik, b);
b b
operator+= (wynik, b);
wynik += b;
a+b
}
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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 );
{
*pArg1 = TabliczkaDzialania[*pArg1][Arg2];
}
Tabliczka
...
int main( )
+ e
{
e e
Symbol wynik = a;
a a
DodajIPodstaw(&wynik, b);
b b
operator+= (wynik, b);
wynik += b;
a+b
}
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
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 );
{
*pArg1 = TabliczkaDzialania[*pArg1][Arg2];
}
Tabliczka
...
int main( )
+ e
{
e e
Symbol wynik = a;
a a
DodajIPodstaw(&wynik, b);
b b
operator+= (&wynik, b);
&wynik += b;
a+b
}
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
O referencji
Referencja w C++ jest pochodnym typem danych (podobnie jak
wskaźnik). Umożliwia pośrednie odwoływanie się do zmiennych i
obiektów.
Kłopoty z terminem referencja
w informatyce przez referencję rozumie się pewną ogólną
koncepcję typu danych. Określa się w ten sposób
obiekt/zmienną zawierającą informację będącą odsyłaczem do
właściwej struktury danych. Zmienne wskaźnikowe w C sa
przykładem realizacji koncepcji referencji.
w C++ referencja jest konkretną implementacją typu danych,
który jest istotnie różny od typu wskaźnikowego.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
O referencji
Referencja w C++ jest pochodnym typem danych (podobnie jak
wskaźnik). Umożliwia pośrednie odwoływanie się do zmiennych i
obiektów.
Kłopoty z terminem referencja
w informatyce przez referencję rozumie się pewną ogólną
koncepcję typu danych. Określa się w ten sposób
obiekt/zmienną zawierającą informację będącą odsyłaczem do
właściwej struktury danych. Zmienne wskaźnikowe w C sa
przykładem realizacji koncepcji referencji.
w C++ referencja jest konkretną implementacją typu danych,
który jest istotnie różny od typu wskaźnikowego.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
O referencji
Referencja w C++ jest pochodnym typem danych (podobnie jak
wskaźnik). Umożliwia pośrednie odwoływanie się do zmiennych i
obiektów.
Kłopoty z terminem referencja
w informatyce przez referencję rozumie się pewną ogólną
koncepcję typu danych. Określa się w ten sposób
obiekt/zmienną zawierającą informację będącą odsyłaczem do
właściwej struktury danych. Zmienne wskaźnikowe w C sa
przykładem realizacji koncepcji referencji.
w C++ referencja jest konkretną implementacją typu danych,
który jest istotnie różny od typu wskaźnikowego.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
O referencji
Referencja w C++ jest pochodnym typem danych (podobnie jak
wskaźnik). Umożliwia pośrednie odwoływanie się do zmiennych i
obiektów.
Kłopoty z terminem referencja
w informatyce przez referencję rozumie się pewną ogólną
koncepcję typu danych. Określa się w ten sposób
obiekt/zmienną zawierającą informację będącą odsyłaczem do
właściwej struktury danych. Zmienne wskaźnikowe w C sa
przykładem realizacji koncepcji referencji.
w C++ referencja jest konkretną implementacją typu danych,
który jest istotnie różny od typu wskaźnikowego.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
int
Licznik;
Dla przykładu rozważmy deklarację zmiennej typu int.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
int
Licznik;
int* const wskLicznik = &Licznik;
Możemy utworzyć stały wskaźnik na zmienną.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
int
Licznik;
int* const wskLicznik = &Licznik;
*wskLicznik = 15;
cerr << Licznik;
Co się wyświetli po wykonaniu przedstawionych
instrukcji?
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
int
Licznik;
int* const wskLicznik = &Licznik;
int
Licznik;
int
&refLicznik = Licznik;
*wskLicznik = 15;
cerr << Licznik;
Definiując referencję (podobnie jak stały wskaźnik)
należy ją od razu zainicjalizować
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
int
Licznik;
int
Licznik;
int* const wskLicznik = &Licznik;
int
&refLicznik = Licznik;
*wskLicznik = 15;
cerr << Licznik;
refLicznik = 15;
cerr << Licznik;
Referencją posługujemy się tak samo jak samą
zmienną.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencja i wskaźnik
W pierwszym przybliżeniu referencja (w C++) może
być uważana jako typ wskaźnikowy stały.
char
Znak;
char
Znak;
char* const wskZnak = &Znak;
char
&refZnak = Znak;
*wskZnak = ’a’;
cerr << Znak;
refZnak = ’a’;
cerr << Znak;
Referencją posługujemy się tak samo jak samą
zmienną. Dotyczy to zmiennych każdego typu.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Cechy wspólne:
poprzez referencje i wskaźniki odwołujemy się do istniejących
zmiennych/obiektów,
do jednego i tego samego obiektu można utworzyć kilka
zmiennych referencyjnych lub zmiennych wskaźnikowych, w
których znajduje się adres tego obiektu,
jeżeli parametr funkcji/metody jest wskaźnikiem lub
referencją, to przekazanie zmiennej poprzez ten parametr
skutkuje tym, że dokonane modyfikacje wartości zmiennej
będą widoczne na zewnątrz funkcji/metod.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Cechy wspólne:
poprzez referencje i wskaźniki odwołujemy się do istniejących
zmiennych/obiektów,
do jednego i tego samego obiektu można utworzyć kilka
zmiennych referencyjnych lub zmiennych wskaźnikowych, w
których znajduje się adres tego obiektu,
jeżeli parametr funkcji/metody jest wskaźnikiem lub
referencją, to przekazanie zmiennej poprzez ten parametr
skutkuje tym, że dokonane modyfikacje wartości zmiennej
będą widoczne na zewnątrz funkcji/metod.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Cechy wspólne:
poprzez referencje i wskaźniki odwołujemy się do istniejących
zmiennych/obiektów,
do jednego i tego samego obiektu można utworzyć kilka
zmiennych referencyjnych lub zmiennych wskaźnikowych, w
których znajduje się adres tego obiektu,
jeżeli parametr funkcji/metody jest wskaźnikiem lub
referencją, to przekazanie zmiennej poprzez ten parametr
skutkuje tym, że dokonane modyfikacje wartości zmiennej
będą widoczne na zewnątrz funkcji/metod.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Cechy wspólne:
poprzez referencje i wskaźniki odwołujemy się do istniejących
zmiennych/obiektów,
do jednego i tego samego obiektu można utworzyć kilka
zmiennych referencyjnych lub zmiennych wskaźnikowych, w
których znajduje się adres tego obiektu,
jeżeli parametr funkcji/metody jest wskaźnikiem lub
referencją, to przekazanie zmiennej poprzez ten parametr
skutkuje tym, że dokonane modyfikacje wartości zmiennej
będą widoczne na zewnątrz funkcji/metod.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Różnice:
referencje można zainicjalizować adresem zmiennej/obiektu
tylko raz, w momencie jej definicji,
jest niedopuszczalny brak inicjalizacji referencji,
referencja nie może mieć adresu nullptr (NULL – C++98).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Różnice:
referencje można zainicjalizować adresem zmiennej/obiektu
tylko raz, w momencie jej definicji,
jest niedopuszczalny brak inicjalizacji referencji,
referencja nie może mieć adresu nullptr (NULL – C++98).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Różnice:
referencje można zainicjalizować adresem zmiennej/obiektu
tylko raz, w momencie jej definicji,
jest niedopuszczalny brak inicjalizacji referencji,
referencja nie może mieć adresu nullptr (NULL – C++98).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Różnice:
referencje można zainicjalizować adresem zmiennej/obiektu
tylko raz, w momencie jej definicji,
jest niedopuszczalny brak inicjalizacji referencji,
referencja nie może mieć adresu nullptr (NULL – C++98).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Zalety stosowania referencji:
referencja jest bezpieczniejszym sposobem odwołania się do
zmiennej. Nie daje jednak stuprocentowej pewności, że
zmienna/obiekt, do której odwołujemy się przez referencję,
istnieje.
sposób odwołania się do zmiennej/obiektu jest dla
programisty przezroczysty. Referencję traktujemy tak samo
jak zmiennę, do której ta referencja odwołuje się.
odwoływanie się poprzez referencję może pozwalać
kompilatorowi na lepszą optymalizację kodu (brak zmian
przechowywanego adresu).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Zalety stosowania referencji:
referencja jest bezpieczniejszym sposobem odwołania się do
zmiennej. Nie daje jednak stuprocentowej pewności, że
zmienna/obiekt, do której odwołujemy się przez referencję,
istnieje.
sposób odwołania się do zmiennej/obiektu jest dla
programisty przezroczysty. Referencję traktujemy tak samo
jak zmiennę, do której ta referencja odwołuje się.
odwoływanie się poprzez referencję może pozwalać
kompilatorowi na lepszą optymalizację kodu (brak zmian
przechowywanego adresu).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Zalety stosowania referencji:
referencja jest bezpieczniejszym sposobem odwołania się do
zmiennej. Nie daje jednak stuprocentowej pewności, że
zmienna/obiekt, do której odwołujemy się przez referencję,
istnieje.
sposób odwołania się do zmiennej/obiektu jest dla
programisty przezroczysty. Referencję traktujemy tak samo
jak zmiennę, do której ta referencja odwołuje się.
odwoływanie się poprzez referencję może pozwalać
kompilatorowi na lepszą optymalizację kodu (brak zmian
przechowywanego adresu).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Zalety stosowania referencji:
referencja jest bezpieczniejszym sposobem odwołania się do
zmiennej. Nie daje jednak stuprocentowej pewności, że
zmienna/obiekt, do której odwołujemy się przez referencję,
istnieje.
sposób odwołania się do zmiennej/obiektu jest dla
programisty przezroczysty. Referencję traktujemy tak samo
jak zmiennę, do której ta referencja odwołuje się.
odwoływanie się poprzez referencję może pozwalać
kompilatorowi na lepszą optymalizację kodu (brak zmian
przechowywanego adresu).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Wady stosowania referencji:
brak elastyczności jaką dają wskaźniki (możliwość zmiany
adresu).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
Wady stosowania referencji:
brak elastyczności jaką dają wskaźniki (możliwość zmiany
adresu).
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
int Zm;
int ∗ const wskZm = &Zm;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
refZm = 2;
int Zm;
int ∗ const wskZm = &Zm;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
∗wskZm = 2;
cout << Zm << endl;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
...
...
...
∗wskZm = 2;
cout << Zm << endl;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
...
...
...
∗wskZm = 2;
cout << Zm << endl;
Programowanie obiektowe
Jaka wartość zostanie wyświetlona
w tym przypadku?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
...
...
...
∗wskZm = 2;
cout << Zm << endl;
Programowanie obiektowe
Jaka wartość zostanie wyświetlona
w tym przypadku?
A jaka wyświetli się tutaj?
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
...
...
...
∗wskZm = 2;
cout << Zm << endl;
Programowanie obiektowe
Jaka wartość zostanie wyświetlona
w tym przypadku?
Tego nikt nie wie!!! Gdyż . . .
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
int Zm;
int ∗ const wskZm = &Zm;
...
(int ∗)wskZm = new int ;
...
∗wskZm = 2;
cout << Zm << endl;
Programowanie obiektowe
Jaka wartość zostanie wyświetlona
w tym przypadku?
Tego nikt nie wie!!! Gdyż można
wymusić zmianę wskaźnika.
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
Jaka wartość zostanie wyświetlona
w tym przypadku?
int Zm;
int ∗ const wskZm = &Zm;
...
const cast <int ∗>(wskZm) = new int ;
...
Tego nikt nie wie!!! Gdyż można
∗wskZm = 2;
wymusić zmianę wskaźnika.
cout << Zm << endl;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
Tu na pewno wyświetli się 2, gdyż
...
int Zm;
int ∗ const wskZm = &Zm;
...
const cast <int ∗>(wskZm) = new int ;
...
Tego nikt nie wie!!! Gdyż można
∗wskZm = 2;
wymusić zmianę wskaźnika.
cout << Zm << endl;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Referencje versus zmienne wskaźnikowe
int Zm;
int & refZm = Zm;
...
...
...
refZm = 2;
cout << Zm << endl;
Tu na pewno wyświetli się 2, gdyż
referencja nie może być zmieniona.
int Zm;
int ∗ const wskZm = &Zm;
...
const cast <int ∗>(wskZm) = new int ;
...
Tego nikt nie wie!!! Gdyż można
∗wskZm = 2;
wymusić zmianę wskaźnika.
cout << Zm << endl;
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Spis treści
1
Podejście obiektowe
Rozumienie świata
Pojęcie
Obiekty
2
Konwencje nazw plików
Standardowe pliki nagłówkowe w C++
3
Przeciążenia funkcji, metod i operatorów
Przeciążenie (przeładowanie) funkcji
4
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przekazywanie parametrów przez referencję
void Poteguj(int & Wart)
{
Wart ∗= Wart;
}
int main( )
{
int Zm=2;
Poteguj(Zm);
cout << Zm << endl;
}
Używając referencji możemy poprzez parametr przekazać do funkcji zmiennę, której zmiany wartości będą widoczne na „zewnątrz”.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Przekazywanie parametrów przez referencję
void Poteguj(int & Wart)
{
Wart ∗= Wart;
}
void Poteguj(int ∗ const wWart)
{
∗wWart ∗= ∗wWart;
}
int main( )
{
int Zm=2;
int main( )
{
int Zm=2;
Poteguj(Zm);
cout << Zm << endl;
}
Poteguj(&Zm);
cout << Zm << endl;
}
Analog tej konstrukcji możemy napisać wykorzystując przekazywanie parametru
poprzez wskaźnik.
Programowanie obiektowe
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Definiowanie operacji dodania i podstawienia?
enum
...
Symbol { e, a, b };
Symbol DodajIPodstaw( Symbol *pArg1, Symbol Arg2 );
{
*pArg1 = TabliczkaDzialania[*pArg1][Arg2];
}
Tabliczka
...
int main( )
+ e
{
e e
Symbol wynik = a;
a a
DodajIPodstaw(&wynik, b);
b b
operator+= (&wynik, b);
&wynik += b;
a+b
}
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Definiowanie operacji dodania i podstawienia?
enum
...
Symbol { e, a, b };
Symbol DodajIPodstaw( Symbol &Arg1, Symbol Arg2 );
{
Arg1 = TabliczkaDzialania[Arg1][Arg2];
}
Tabliczka
...
int main( )
+ e
{
e e
Symbol wynik = a;
a a
DodajIPodstaw(wynik, b);
b b
operator+= (&wynik, b);
&wynik += b;
a+b
}
Programowanie obiektowe
działania
a
a
b
e
b
b
e
a
=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Definiowanie operacji dodania i podstawienia?
enum
...
Symbol { e, a, b };
Symbol DodajIPodstaw( Symbol &Arg1, Symbol Arg2 );
void operator += ( Symbol *pArg1, Symbol Arg2 );
...
Tabliczka działania
int main( )
{
Symbol
wynik = a;
DodajIPodstaw(wynik, b);
operator+= (&wynik, b);
&wynik += b;
}
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Operatory jako funkcje
Referencja – czym jest
Porównanie – referencje i zmienne wskaźnikowe
Przekazywanie parametrów przez referencję
Definiowanie operacji dodania i podstawienia?
enum
...
Symbol { e, a, b };
Symbol DodajIPodstaw( Symbol &Arg1, Symbol Arg2 );
void operator += ( Symbol &Arg1, Symbol Arg2 );
...
Tabliczka działania
int main( )
{
Symbol
wynik = a;
DodajIPodstaw(wynik, b);
operator+= (wynik, b);
wynik += b;
}
Programowanie obiektowe
+
e
a
b
e
e
a
b
a
a
b
e
b
b
e
a
a+b=e
Podejście obiektowe
Konwencje nazw plików
Przeciążenia funkcji, metod i operatorów
Przeciążanie operatorów
Koniec prezentacji
Dziękuję za uwagę
Programowanie obiektowe
Podejście obiektowe, przeciążenia operatorów, referencje

Podobne dokumenty