Bogdan Kreczmer. Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska
|
|
- Marian Sobczyk
- 6 lat temu
- Przeglądów:
Transkrypt
1 Podejście obiektowe, przeciążenia operatorów, referencje Bogdan Kreczmer Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową. Podejście obiektowe, przeciążenia operatorów, referencje
2 Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer:
3 Spis treści Podejście obiektowe 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję
4 Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
5 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania.
6 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem.
7 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem. Wyróżnianie obiektów może być dokonywane na różne sposoby. Oparte jest ono na obserwacji i wcześniejszej wiedzy.
8 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem. Wyróżnianie obiektów może być dokonywane na różne sposoby. Oparte jest ono na obserwacji i wcześniejszej wiedzy. Obiektowi lub obiektom jesteśmy w stanie przypisać pojęcia. Proces ten nazywa się postrzeganiem.
9 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty
10 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty
11 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty...
12 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty...
13 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty i przypisać im pojęcia.
14 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Wyodrębnieniu może podlegać zestaw elementów, jako osobna całość.
15 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Pojęcie odnosi się wówczas do zbioru elementów między którymi zachodzą odpowiednie relacje.
16 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Każdemu z elementów może być osobno wyróżniony poprzez przypisanie mu indywidualnego pojęcia.
17 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Znajdując cechy wspólne wszystkich elementów możemy również przyporządkować pojęcie ich zbiorowi.
18 Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
19 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia.
20 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia. Pojęcie jest wyobrażeniem lub oznaczeniem, które stosujemy do rzeczy lub wyobrażeń abstrakcyjnych.
21 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia. Pojęcie jest wyobrażeniem lub oznaczeniem, które stosujemy do rzeczy lub wyobrażeń abstrakcyjnych. Przypisywanie pojęć jest możliwe dzięki rozpoznaniu własności wspólnych dla reprezentantów zbiorów, do których stosuje się dane pojęcie.
22 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu.
23 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne
24 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom
25 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma
26 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo
27 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo spotkanie zakup wyjazd
28 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo spotkanie zakup wyjazd wzorowy nietypowy ikona
29 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia
30 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia
31 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia
32 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego.
33 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego. Ekstensja jest zbiorem wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie.
34 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego. Ekstensja jest zbiorem wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie. Trójka pojęciowa = (nazwa, intensja, ekstensja)
35 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja)
36 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy
37 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa intensja ekstensja
38 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja ekstensja
39 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja ekstensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania.
40 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania. ekstensja irb-6, IRB1400, Puma 560,...
41 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania. ekstensja irb-6, IRB1400, Puma 560,...
42 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja
43 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa intensja ekstensja
44 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja
45 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,...
46 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,...
47 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,... Niektóre pojęcia mogą nie mieć swoich reprezentantów.
48 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja
49 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa intensja ekstensja
50 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja
51 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja
52 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja 40S25, 40S25,...
53 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja 40S25, 40S25,... Pojęcie może nie mieć swojej definicji. Przykład układu scalonego, którego dokumentacja i opis zostały zagubione.
54 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja
55 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa intensja ekstensja
56 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja ekstensja
57 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja ekstensja Osoba lub organizacja kupująca dobra lub usługi.
58 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego
59 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego
60 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient, Interesant nazwa Klient, Interesant intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego
61 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient, Interesant nazwa Klient, Interesant intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego Pojęcia mogą mieć synonimy.
62 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego
63 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. Aplikacja programowa, która żąda od innej aplikacji realizacji usług. ekstensja Jan Kowalski, Firma Jana Kowalskiego xclock, xterm,...
64 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. Aplikacja programowa, która żąda od innej aplikacji realizacji usług. ekstensja Jan Kowalski, Firma Jana Kowalskiego xclock, xterm,... Pojęcia mogą mieć homonimy.
65 Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
66 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiekt?! Co to takiego???
67 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia.
68 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia. Pojęcie = robot przemysłowy
69 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia. Pojęcie = robot przemysłowy Obiekt = konkretny egzemplarz robota, np. robota IRB1400
70 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.
71 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.
72 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.
73 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.
74 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.
75 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.
76 Spis treści Podejście obiektowe Standardowe pliki nagłówkowe w C++ 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
77 Wyświetlenie prostego komunikatu Standardowe pliki nagłówkowe w C++ Język C #include <stdio.h> Język C++ #include <iostream> int main( ) { printf( Hejka!!!\n ); return 0; } int main( ) { std::cout << Hejka!!!\n ; } Jedną z istotnych cech programów pisanych w języku C++ jest brak rozszerzeń w nazwach plików nagłówkowych.
78 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 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++
79 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 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++
80 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 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++
81 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 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++
82 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 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++
83 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 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++
84 C++ ARM versus ANSI/ISO C++ Standardowe pliki nagłówkowe w C++ C++ ARM #include <iostream.h> int main( ) { cout << Hejka!!! << endl; return 0; } ANSI/ISO C++ #include <iostream> using namespace std; int main( ) { cout << Hejka!!! << endl; } Różnica w nazwach plików nagłówkowych umożliwiło środowisku programistów łagodne przejście z C++ARM do standardu ANSI/ISO C++.
85 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
86 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
87 Standardowe pliki nagłówkowe w C++ Rozszerzenia plików C++ Przypomnienie.H.C.hh.cc.hpp.cpp.hxx.cxx Nie ma jednej ustalonej konwencji.
88 Standardowe pliki nagłówkowe w C++ Rozszerzenia plików C++ Przypomnienie.H.C.hh.cc.hpp.cpp.hxx.cxx Można również stosować konwencje mieszane.
89 Standardowe pliki nagłówkowe w C++ Chronologia wprowadzanych standardów C (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. C (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.
90 Standardowe pliki nagłówkowe w C++ Chronologia wprowadzanych standardów C (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. C (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. C++TR (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. C (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.
91 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C 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 Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11.
92 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C 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 Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11.
93 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C 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 Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C
94 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++
95 Standard wykorzystywany na zajęciach Standardowe pliki nagłówkowe w C++ Obowiązuje nas: ISO C++14 g++ -c -Wall -pedantic -std=c++14 program.cpp
96 Standard wykorzystywany na zajęciach Standardowe pliki nagłówkowe w C++ Obowiązuje nas: ISO C++14 g++ -c -Wall -pedantic -std=c++14 program.cpp Należy jednak pamiętać, że implmenetacja standardu C++14 ma wciąż charakter eksperymentalny i nie jest pełna!
97 Spis treści Podejście obiektowe Przeciążenie (przeładowanie) funkcji 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
98 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach.
99 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach. Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; }
100 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach. Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; }
101 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }
102 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }
103 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }
104 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie?
105 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie Jak to rozumieć?
106 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność.
107 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (2) istniejącą zawartość wyładowujemy i na jej miejsce wprowadzamy nowy ładunek.
108 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie A to jak rozumić?
109 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar.
110 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.
111 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność. Przeładowanie (2) istniejącą zawartość wyładowujemy i na jej miejsce wprowadzamy nowy ładunek. Przeciążenie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar. Przeciążenie (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.
112 Spis treści Podejście obiektowe Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
113 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
114 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
115 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
116 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; Tabliczka działania } + e a b int main( ) { Symbol } x = a, wynik; wynik = operator + (x, b); e e a b a a b e b b e a a + b = e
117 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; Tabliczka działania } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b = e
118 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Nie możemy return definiować TabliczkaDzialania[Arg1][Arg2]; funkcji operatorowych, gdy ich wszystkie Tabliczka parametry działania są typów wbudowanych } takich jak float, int, itd. np. + e a b int operator + (int arg1, float arg2) int main( ) e e a b { { a a b e Symbol... x = a, wynik; b b e a } wynik = x + b; } Dla tych typów definicje tych operacji są już wbudowane w kompilator. a + b = e
119 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Uwaga: return Wbudowanych TabliczkaDzialania[Arg1][Arg2]; definicji operatorów dodawania nie możnatabliczka jawnie wywołać działania tak jak operacji } np. dla symboli, tzn. + e a b int Liczba main( = ) operator + (10, 2); { Symbol x = a, wynik; } wynik = x + b; e e a b a a b e b b e a a + b = e
120 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Uwaga: return Wbudowanych TabliczkaDzialania[Arg1][Arg2]; definicji operatorów dodawania nie możnatabliczka jawnie wywołać działania tak jak operacji } np. dla symboli, tzn. + e a b int Liczba main( ) e e a b = operator + (10, 2); { a a b e Symbol x = a, wynik; b b e a } wynik = x + b; a + b = e
121 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + b; x = a, wynik; + e a b e e a b a a b e b b e a a + b = e
122 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + +b; x = a, wynik; + e a b e e a b a a b e b b e a a + b = e
123 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = x + (+b); + e a b e e a b a a b e b b e a a + b = e
124 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); + e a b e e a b a a b e b b e a a + b = e
125 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) {??? } int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
126 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) { return Arg; } int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
127 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) { return Arg; } int main( ) { Symbol } wynik = x + +b; x = a, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
128 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + b; x = a, wynik; + e a b e e a b a a b e b b e a a + b =?
129 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) {??? Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
130 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
131 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
132 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e + e = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
133 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e + e = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
134 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { a +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
135 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { a + b = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
136 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { b +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
137 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { b + a = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
138 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania return ElemOdwrotny[Arg]; } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?
139 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania return ElemOdwrotny[Arg]; } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b = a + a = b
140 Jeszcze raz dodawanie Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b };... Symbol Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); wynik = operator+ (x, b); wynik = x + b; + e a b e e a b a a b e b b e a a + b = e
141 Jeszcze raz dodawanie Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b };... Symbol Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol x = a, wynik; + e a b e e a b a a b e b b e a } wynik = x + b; a + b = e
142 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e
143 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e
144 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e
145 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; Tabliczka działania + e a b e e a b a a b e b b e a } wynik += b; a + b = e
146 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
147 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
148 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
149 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); { return Arg1 = TabliczkaDzialania[Arg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
150 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); { return Arg1 = TabliczkaDzialania[Arg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
151 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol *parg1, Symbol Arg2 ); { return *parg1 = TabliczkaDzialania[*pArg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(&wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
152 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol *parg1, Symbol Arg2 ); { return *parg1 = TabliczkaDzialania[*pArg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(&wynik, b); operator+= (&wynik, b); &wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e
153 Spis treści Podejście obiektowe Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje
Podejście obiektowe wprowadzenie
wprowadzenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer
Bardziej szczegółowoPodejście obiektowe - podstawowe pojęcia
Podejście obiektowe - podstawowe pojęcia Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2003 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoOrganizacja kursu, paradygmaty, ogólnie o C i C++
Organizacja kursu, paradygmaty, ogólnie o C i C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan
Bardziej szczegółowoSzablony funkcji i szablony klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoGeneza C++, manipulatory
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Bardziej szczegółowoWprowadzenie do szablonów klas
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do
Bardziej szczegółowoPrzestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Bardziej szczegółowoOperacje wejścia/wyjścia odsłona pierwsza
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoWprowadzenie do szablonów szablony funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoWykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
Bardziej szczegółowoQt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska
Qt sygnały i sloty Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera
Bardziej szczegółowoSchemat konstrukcja pliku Makefile
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoZadanie 2: Arytmetyka symboli
1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie
Bardziej szczegółowoPraca z aplikacją designer
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2014 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoWyliczanie wyrażenia obiekty tymczasowe
Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoPola i metody statyczne
Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Bardziej szczegółowoWyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania
Bardziej szczegółowoPaostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski
Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski dr Dariusz Wardowski, Instytut Matematyki i Informatyki PWSZ w Płocku 1 O mnie prowadzący wykład i laboratoria: Dariusz Wardowski pokój: 102
Bardziej szczegółowoQt sygnały i designer
Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan
Bardziej szczegółowoJęzyk C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
Bardziej szczegółowoPrzesłanianie nazw, przestrzenie nazw
Przesłanianie nazw, przestrzenie nazw Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoOperacje wejścia/wyjścia (odsłona druga) - pliki
Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały
Bardziej szczegółowoProgramowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
Bardziej szczegółowoPodstawy algorytmiki i programowania - wykład 4 C-struktury
1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona
Bardziej szczegółowo1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Bardziej szczegółowoReferencje do zmiennych i obiektów
Referencje do zmiennych i obiektów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoTEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Bardziej szczegółowoGeneza C++, hermetyzacja struktur danych
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoWstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe
Wstęp do programowania obiektowego Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe 1 PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI W C++ 2 W C++
Bardziej szczegółowoPodczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
Bardziej szczegółowoWprowadzenie do UML, przykład użycia kolizja
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoKonstruktor kopiujacy
Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony
Bardziej szczegółowoWartości domyślne, przeciażenia funkcji
Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoWartości domyślne, przeciażenia funkcji
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoMETODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Bardziej szczegółowoProgramowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane
Bardziej szczegółowoBibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,
Programowanie obiektowe (OOP) Dr. Inż. Hab. Siergiej Fialko, IMK-PK, http://torus.uck.pk.edu.pl/~fialko sfialko@riad.pk.edu.pl Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne,
Bardziej szczegółowoWstęp do programowania
wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych
Bardziej szczegółowoPodstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++
Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard
Bardziej szczegółowoProgramowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30
Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane
Bardziej szczegółowoPodstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
Bardziej szczegółowoWstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 1 Literatura Literatura podstawowa: Prata Stephen. Szkoła programowania. Język C++. Wydanie V. Helion,
Bardziej szczegółowoSzablon klasy std::vector
Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat
Bardziej szczegółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegółowoPodstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
Bardziej szczegółowoWykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Bardziej szczegółowoProgramowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Bardziej szczegółowoWskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:
Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja
Bardziej szczegółowoPodstawy Programowania Obiektowego
Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja
Bardziej szczegółowoProgramowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Bardziej szczegółowoPrzeciążanie operatorów
Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz
Bardziej szczegółowoProgramowanie 2. Język C++. Wykład 3.
3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane
Bardziej szczegółowowykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Bardziej szczegółowoCzęść 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Bardziej szczegółowoSkładnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Bardziej szczegółowoTechniki Programowania wskaźniki
Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza
Bardziej szczegółowoHermetyzacja oraz pola i metody statyczne
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowo1 Wskaźniki. 1.1 Główne zastosowania wskaźników
1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować
Bardziej szczegółowoWykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,
Bardziej szczegółowoWskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Bardziej szczegółowoDalmierze optyczne. Bogdan Kreczmer. bogdan.kreczmer@pwr.wroc.pl
Dalmierze optyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer
Bardziej szczegółowoFunkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
Bardziej szczegółowoJĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,
Bardziej szczegółowodr inż. Jarosław Forenc
Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 6 (07.12.2012) dr inż. Jarosław Forenc Rok
Bardziej szczegółowoC-struktury wykład. Dorota Pylak
C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.
Bardziej szczegółowoProgramowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów
Rok akademicki 2016/2017, Wykład nr 5 2/40 Plan wykładu nr 5 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 6. Klasy i obiekty
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto
Bardziej szczegółowoProgramowanie obiektowe w języku C++ dr inż. Jarosław Forenc
Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017
Bardziej szczegółowoFunkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów
Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików
Bardziej szczegółowoKażdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni
Język obiektowy był krokiem ewolucji w programowaniu komputerów. Powstał w wyniku rozwoju języków strukturalnych i zmiany podejścia do problemów informatycznych. Cały otaczający świat składa się z obiektów.
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego
Bardziej szczegółowoWykład 5: Klasy cz. 3
Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu
Bardziej szczegółowoPROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.
PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu
Bardziej szczegółowoWyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
Bardziej szczegółowoZasoby, pliki graficzne
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowoDariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki
Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)
Bardziej szczegółowoZad. 5: Układ równań liniowych liczb zespolonych
Zad. 5: Układ równań liniowych liczb zespolonych 1 Cel ćwiczenia Wykształcenie zdolności abstrahowania operacji arytmetycznych od konkretnych typów. Unaocznienie problemów związanych z programowaniem uogólnionym
Bardziej szczegółowoPodstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Bardziej szczegółowoProgramowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.
Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie
Bardziej szczegółowoPrzeciążenie (przeładowanie nazw) funkcji
Przeciążenie (przeładowanie nazw) funkcji dla większości języków (w tym C) zasada w programie może być tylko jedna funkcja o danej nazwie kompilator C++ - dopuszcza więcej niż jedną funkcję o tej samej
Bardziej szczegółowoStrona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Bardziej szczegółowoPodstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Bardziej szczegółowoSzablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Bardziej szczegółowoStruktury Struktura polami struct struct struct struct
Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
Bardziej szczegółowoZaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoInformatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018
Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy
Bardziej szczegółowoProgramowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Bardziej szczegółowoDiagramy UML, przykład problemu kolizji
Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu
Bardziej szczegółowopublic: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje
Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja
Bardziej szczegółowoWykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:
Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie
Bardziej szczegółowoStyle programowania, geneza języka C++
Style programowania, geneza języka C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Programowanie
Bardziej szczegółowoJęzyk C++ zajęcia nr 2
Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator
Bardziej szczegółowoPodstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
Bardziej szczegółowoProjektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Bardziej szczegółowoPROGRAMOWANIE w C prolog
PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014
Bardziej szczegółowoStyle programowania - krótki przeglad
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Bardziej szczegółowoJęzyki i metodyka programowania. Wprowadzenie do języka C
Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia
Bardziej szczegółowo