Język C i C++ – najistotniejsze różnice
Podejście obiektowe – wprowadzenie
Bogdan Kreczmer
bogdan.kreczmer@pwr.wroc.pl
Zakład Podstaw Cybernetyki i Robotyki
Instytut Informatyki, Automatyki i Robotyki
Politechnika Wrocławska
Kurs: Programowanie obiektowe
Copyright c
2008 Bogdan Kreczmer
Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on
udostępiony 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
Język C i C++ – najistotniejsze różnice
Niniejsza prezentacja została wykonana przy użyciu sys-
temu składu L
A
TEX oraz stylu beamer, którego autorem
jest Till Tantau.
Strona domowa projektu Beamer:
http://latex-beamer.sourceforge.net
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Moje dane
Bogdan Kreczmer, dr inż., pok. 307 bud C-3
Terminy konsultacji: śr.
11:00 –
13:00
cz. 13:00 –
15:00
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Organizacja zajęć i warunki zaliczeń
Kurs kończy się egzaminem. Do egzaminu można przystąpić pod
warunkiem uzyskania zaliczenia z laboratorium
Istnieje możliwość zwolnienia z egzaminu na podstawie oceny z
laboratorium i wyników ekranówek. Przewidywanych jest od 4 do 6
ekranówek
Warunki zwolnienia:
ocena z laboratorium 4.5
ocena z ekranówek 4.0
sposób liczenia oceny z egzaminu:
Ocena z kursu = 40% oceny laboratorium + 60% oceny z ekranówek
Ocena celująca → ekranówki 95%; laboratorium 5,5
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Literatura
Literatura podstawowa:
Bjarne Stroustrup, Język C++, WNT, 2002
J. Grębosz, Symfonia C ++ standard
J. Grębosz, Pasja C ++
J. Kisilewicz, Język C++. Programowanie obiektowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Literatura
Literatura pomocnicza:
B. Eckel, Thinking in C++, HELION, 2002
Nicolai M. Josuttis, C++ Biblioteka standardowa, Podręcznik pro-
gramisty
David Vandevoorde, Nicolai M. Josuttis, C++ szablony
Grady Booch, James Rumbaugh, Ivar Jacobson, UML
przewodnik
użytkownika
James Martin, James J. Odell, Podstawy metod obiektowych
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Literatura
Literatura pomocnicza:
B. Eckel, Thinking in C++, HELION, 2002
Nicolai M. Josuttis, C++ Biblioteka standardowa, Podręcznik pro-
gramisty
David Vandevoorde, Nicolai M. Josuttis, C++ szablony
Grady Booch, James Rumbaugh, Ivar Jacobson, UML
przewodnik
użytkownika
James Martin, James J. Odell, Podstawy metod obiektowych
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Literatura
Literatura pomocnicza:
B. Eckel, Thinking in C++, HELION, 2002
Nicolai M. Josuttis, C++ Biblioteka standardowa, Podręcznik pro-
gramisty
David Vandevoorde, Nicolai M. Josuttis, C++ szablony
Grady Booch, James Rumbaugh, Ivar Jacobson, UML
przewodnik
użytkownika
James Martin, James J. Odell, Podstawy metod obiektowych
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Literatura
Literatura pomocnicza:
B. Eckel, Thinking in C++, HELION, 2002
Nicolai M. Josuttis, C++ Biblioteka standardowa, Podręcznik pro-
gramisty
David Vandevoorde, Nicolai M. Josuttis, C++ szablony
Grady Booch, James Rumbaugh, Ivar Jacobson, UML
przewodnik
użytkownika
James Martin, James J. Odell, Podstawy metod obiektowych
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Literatura
Literatura pomocnicza:
B. Eckel, Thinking in C++, HELION, 2002
Nicolai M. Josuttis, C++ Biblioteka standardowa, Podręcznik pro-
gramisty
David Vandevoorde, Nicolai M. Josuttis, C++ szablony
Grady Booch, James Rumbaugh, Ivar Jacobson, UML
przewodnik
użytkownika
James Martin, James J. Odell, Podstawy metod obiektowych
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
1
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
2
UML – geneza i przeznaczenie
UML – Diagramy
3
Zestawienie stylów programowania
4
Język C i C++ – najistotniejsze różnice
Kilka przykładowych różnic
Od C do C++
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Programowanie obiektowe oparte jest na podejściu obiektowym do
analizy problemu oraz syntezy i implementacji jego rozwiązania.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty . . .
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty . . .
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty i przypisać im
pojęcia.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty i przypisać im
pojęcia.
Proces ten nazywamy postrzeganiem.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Wyodrębnieniu może podlegać zestaw elementów, jako osobna całość.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Pojęcie odnosi się wówczas do zbioru elementów między którymi zachodzą odpo-
wiednie relacje.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Każdemu z elementów może być osobno wyróżniony poprzez przypisanie mu indy-
widualnego pojęcia.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Postrzeganie
Znajdując cechy wspólne wszystkich elementów możemy również pojęcie przypo-
rządkować ich zbiorowi.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia
abstrakcyjnego jest przypisanie mu pewnego pojęcia.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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ól-
nych dla reprezentantów zbiorów, do których stosuje się dane pojęcie.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom
znajdującym się w naszym otoczeniu.
Przykłady pojęć:
materialne
niematerialne relacyjne
zdarzenia
inne
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
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
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Termin pojęcie zawiera:
intensję – treść pojęcia
ekstensję – zakres pojęcia
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Termin pojęcie zawiera:
intensję – treść pojęcia
ekstensję – zakres pojęcia
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Czym jest pojęcie
Termin pojęcie zawiera:
intensję – treść pojęcia
ekstensję – zakres pojęcia
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Robot przemysłowy
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Robot przemysłowy
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (
nazwa
, intensja, ekstensja)
Robot przemysłowy
nazwa
Robot przemysłowy
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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 au-
tomatycznie za pomocą sygnałów ge-
nerowanych w programowalnym ukła-
dzie sterowania.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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 au-
tomatycznie za pomocą sygnałów ge-
nerowanych w programowalnym ukła-
dzie sterowania.
iRb-6, IRB1400,
Puma 560, . . .
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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 au-
tomatycznie za pomocą sygnałów ge-
nerowanych w programowalnym ukła-
dzie sterowania.
iRb-6, IRB1400,
Puma 560, . . .
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Idealny człowiek
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (
nazwa
, intensja, ekstensja)
Idealny człowiek
nazwa
Idealny człowiek
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
40S25
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (
nazwa
, intensja, ekstensja)
40S25
nazwa
40S25
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa,
intensja
, ekstensja)
40S25
nazwa
40S25
intensja
ekstensja
×
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja,
ekstensja
)
40S25
nazwa
40S25
intensja
ekstensja
×
40S25, 40S25, . . .
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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 zostają zagubione.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (nazwa, intensja, ekstensja)
Klient
nazwa
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
Przykłady trójek pojęciowych
Trójka pojęciowa = (
nazwa
, intensja, ekstensja)
Klient
nazwa
Klient
intensja
ekstensja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Obiekty
Typy obiektowe, hierarchie typów
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Obiekt ?! Co to takiego ???
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Obiektem jest to coś, do czego da się zastosować ja-
kieś pojęcie. Tak więc obiekt jest egzemplarzem poję-
cia
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Typy obiektowe, hierarchie typów
Obiekty
Własności:
Obiekt może mieć własności, 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.
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
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Typ obiektowy
???
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Typ obiektowy jest pojęciem, tzn. jest koncepcją lub
ideą, którą stosujemy do obiektów występujących w
naszej świadomości.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Typ obiektowy jest pojęciem, tzn. jest koncepcją lub
ideą, którą stosujemy do obiektów występujących w
naszej świadomości.
Typ obiektowy jest typem obiektu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Własności:
Typ obiektowy jest też pojęciem.
Do pojedynczego obiektu może stosować się
wiele pojęć (typów obiektowych).
Typy obiektowe mogą tworzyć hierarchię od
bardzo ogólnych pojęć do pojęć szczegółowych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Własności:
Typ obiektowy jest też pojęciem.
Do pojedynczego obiektu może stosować się
wiele pojęć (typów obiektowych).
Typy obiektowe mogą tworzyć hierarchię od
bardzo ogólnych pojęć do pojęć szczegółowych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Własności:
Typ obiektowy jest też pojęciem.
Do pojedynczego obiektu może stosować się
wiele pojęć (typów obiektowych).
Typy obiektowe mogą tworzyć hierarchię od
bardzo ogólnych pojęć do pojęć szczegółowych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Typ obiektowy
Własności:
Typ obiektowy jest też pojęciem.
Do pojedynczego obiektu może stosować się
wiele pojęć (typów obiektowych).
Typy obiektowe mogą tworzyć hierarchię od
bardzo ogólnych pojęć do pojęć szczegółowych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uogólnienia:
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uogólnienia:
Samochód
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uogólnienia:
Samochód
=⇒ Pojazd
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uogólnienia:
Samochód =⇒ Pojazd
Uogólnienie jest aktem lub wynikiem wyróżnienia ty-
pu obiektowego, który całkowicie zawiera (obejmuje)
inny typ obiektowy.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uszczegółowienia:
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uszczegółowienia:
Pojazd
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uszczegółowienia:
Pojazd
⇐= Quad
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Hierarchie typów obiektowych możemy tworzyć po-
przez uogólnienie lub uszczegółowienie danego typu
obiektowego.
Przykład uszczegółowienia:
Pojazd ⇐= Quad
Specjalizowanie jest aktem lub wynikiem wyróżnie-
nia typu obiektowego, który całkowicie zawiera się w
innym typie obiektowym.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów
Typ
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów
Nadtyp
Typ
↑
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów
Nadtyp
Typ
↑
↓
Podtyp
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów
Nadtyp
– definicja jest ogólniejsza niż definicja
innego typu, którego elementy zawarte są
w zbiorze danego typu obiektowego.
Typ
↑
↓
Podtyp
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów
Nadtyp
– definicja jest ogólniejsza niż definicja
innego typu, którego elementy zawarte są
w zbiorze danego typu obiektowego.
Typ
↑
↓
Podtyp
– definicja jest bardziej wyspecjalizowa-
na niż definicja innego typu zawierającego
między innymi również te same obiekty.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów – przykład
Nadtyp
Typ
↑
↓
Podtyp
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów – przykład
Nadtyp
Typ
−→
Samochód
↑
↓
Podtyp
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów – przykład
Nadtyp
−→
Pojazd
Typ
−→
Samochód
↑
↓
Podtyp
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów – przykład
Nadtyp
−→
Pojazd
Typ
−→
Samochód
↑
↓
Podtyp
−→
Kabriolet
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchia typów – przykład (I ♥ Lamborghini :-)
Nadtyp
−→
Pojazd
Typ
−→
Samochód
↑
↓
Podtyp
−→
Kabriolet
Lamborghini Gallardo Spider, autor zdjęcia: Manju
Źródło: http://pl.wikipedia.org/wiki/Grafika:Lamborghini Gallardo.jpg
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Uogólnienie i specjalizowanie pozwalają tworzyć hierarchię
abstrakcji.
Pomagają one lepiej zrozumieć znaczenie danego
typu obiektowego w kontekście hierarchii typów. Tym samym
pomagają lepiej zamodelować rozwiązanie problemu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Uogólnienie i specjalizowanie pozwalają tworzyć hierarchię
abstrakcji.
Pomagają one lepiej zrozumieć znaczenie danego
typu obiektowego w kontekście hierarchii typów.
Tym samym
pomagają lepiej zamodelować rozwiązanie problemu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Uogólnienie i specjalizowanie pozwalają tworzyć hierarchię
abstrakcji. Pomagają one lepiej zrozumieć znaczenie danego
typu obiektowego w kontekście hierarchii typów.
Tym samym
pomagają lepiej zamodelować rozwiązanie problemu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Uogólnienie i specjalizowanie pozwalają tworzyć hierarchię
abstrakcji. Pomagają one lepiej zrozumieć znaczenie danego
typu obiektowego w kontekście hierarchii typów. Tym samym
pomagają lepiej zamodelować rozwiązanie problemu.
Jak w językach programowania wspierane jest tworzenie hierarchii
typów?
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Hierarchie typów obiektowych
Uogólnienie i specjalizowanie pozwalają tworzyć hierarchię
abstrakcji. Pomagają one lepiej zrozumieć znaczenie danego
typu obiektowego w kontekście hierarchii typów. Tym samym
pomagają lepiej zamodelować rozwiązanie problemu.
Do definiowania podtypów w językach programowania wspierają-
cych paradygmat obiektowy wykorzystywane jest dziedziczenie.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Istnieją dwa typy dziedziczenia:
jednobazowe
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Istnieją dwa typy dziedziczenia:
jednobazowe
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Istnieją dwa typy dziedziczenia:
jednobazowe
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Istnieją dwa typy dziedziczenia:
jednobazowe – dany typ dziedziczy bezpośrednio
tylko jeden podtyp,
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Istnieją dwa typy dziedziczenia:
jednobazowe – dany typ dziedziczy bezpośrednio
tylko jeden podtyp,
wielobazowe – dany typ może dziedziczyć
bezpośrednio wiele podtypów.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Przykład:
jednobazowe
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Przykład:
jednobazowe
Jabłko
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Przykład:
jednobazowe
Jabłko =⇒ Owoc
wielobazowe
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Przykład:
jednobazowe
Jabłko =⇒ Owoc
wielobazowe
Dźwig samobieżny
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Dziedziczenie
Przykład:
jednobazowe
Jabłko =⇒ Owoc
wielobazowe
Dźwig samobieżny =⇒ Pojazd, Dźwig
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Metody
Cechą charakterystyczną podejścia obiektowego i języków obiek-
towych jest ścisłe powiązanie operacji z danymi, na których są
one wykonywane.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Metody
Cechą charakterystyczną podejścia obiektowego i języków obiek-
towych jest ścisłe powiązanie operacji z danymi, na których są
one wykonywane.
Przejawem tego jest to, że dla każdego typu
obiektowego można zdefiniować metody.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Metody
Cechą charakterystyczną podejścia obiektowego i języków obiek-
towych jest ścisłe powiązanie operacji z danymi, na których są
one wykonywane. Przejawem tego jest to, że dla każdego typu
obiektowego można zdefiniować metody.
Metoda jest specyfikacją sposobu wykonania operacji, tzn. jed-
nostkowego procesu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Metody
Cechą charakterystyczną podejścia obiektowego i języków obiek-
towych jest ścisłe powiązanie operacji z danymi, na których są
one wykonywane. Przejawem tego jest to, że dla każdego typu
obiektowego można zdefiniować metody.
Metoda jest specyfikacją sposobu wykonania operacji, tzn. jed-
nostkowego procesu.
Proces jest uporządkowana sekwencja działań (czasami wykony-
wanych w celu osiągnięcia pewnego rezultatu :-).
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Podsumowanie - najważniejsze terminy
Obiekt
Typ obiektowy
Metoda
Dziedziczenie
Polimorfizm
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Podsumowanie - najważniejsze terminy
Obiekt
Typ obiektowy
Metoda
Dziedziczenie
Polimorfizm
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Podsumowanie - najważniejsze terminy
Obiekt
Typ obiektowy
Metoda
Dziedziczenie
Polimorfizm
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Podsumowanie - najważniejsze terminy
Obiekt
Typ obiektowy
Metoda
Dziedziczenie
Polimorfizm
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Podsumowanie - najważniejsze terminy
Obiekt
Typ obiektowy
Metoda
Dziedziczenie
Polimorfizm
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Podsumowanie - najważniejsze terminy
Obiekt
Typ obiektowy
Metoda
Dziedziczenie
Polimorfizm
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza
Projektowanie
Konstrukcja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza
Projektowanie
Konstrukcja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza
Projektowanie
Konstrukcja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza
Projektowanie
Konstrukcja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza – jest odwzorowaniem rzeczywistego świata na
jego model koncepcyjny
Projektowanie
Konstrukcja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza – jest odwzorowaniem rzeczywistego świata na
jego model koncepcyjny
Projektowanie – jest odwzorowaniem modelu
koncepcyjnego na model implementacji.
Konstrukcja
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza – jest odwzorowaniem rzeczywistego świata na
jego model koncepcyjny
Projektowanie – jest odwzorowaniem modelu
koncepcyjnego na model implementacji.
Konstrukcja – jest odwzorowaniem modelu implementacji
na działający system.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozumienie świata
Pojęcie
Obiekty
Typy obiektowe, hierarchie typów
Skąd się biorą typy (ciemne?)
Przejściu od sformułowania problemu do jego rozwiązania w po-
staci działające systemu towarzyszą zwykle trzy fazy:
Analiza – jest odwzorowaniem rzeczywistego świata na
jego model koncepcyjny
Projektowanie – jest odwzorowaniem modelu
koncepcyjnego na model implementacji.
Konstrukcja – jest odwzorowaniem modelu implementacji
na działający system.
Etapy te nie muszą przebiegać sekwencyjnie. Wszystko zależy od
przyjętych technik i strategii rozwiązywania danego problemu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Główni twórcy: Grady Booch, Ivar Jacobson, James Rumbaugh
1994 – zapoczątkowanie prac nad UML
1995 – pierwsza robocza wersja 0.8
1997 – zaakceptowanie wersji 1.1 przez OMG (Object Manag-
ment Group)
1999 – opublikowanie wersji 1.3
2004/2005 – zaakceptowanie wersji 2.0
sierpień 2007 – opublikowanie wersji 2.1.1
Strona projektu: http://www.uml.org
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
UML jest językiem znormalizowanym, służącym do zapisywania
projektu systemu.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
UML jest językiem znormalizowanym, służącym do zapisywania
projektu systemu.
Może być stosowany do obrazowania, specy-
fikowania, tworzenia i dokumentowania artefaktów powstałych
podczas procesu budowy systemu informatycznego.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
UML jest językiem znormalizowanym, służącym do zapisywania
projektu systemu. Może być stosowany do obrazowania, specy-
fikowania, tworzenia i dokumentowania artefaktów powstałych
podczas procesu budowy systemu informatycznego.
UML służy do obrazowania, specyfikowania i dokumentowania
systemów obiektowych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
UML jest językiem znormalizowanym, służącym do zapisywania
projektu systemu. Może być stosowany do obrazowania, specy-
fikowania, tworzenia i dokumentowania artefaktów powstałych
podczas procesu budowy systemu informatycznego.
UML służy do obrazowania, specyfikowania i dokumentowania
systemów obiektowych.
UML jest przede wszystkim przeznaczony do budowy systemów
informatycznych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Przykładowe obszary zastosowań:
tworzenie systemów informatycznych
przedsiębiorstw,
usług bankowych i finansowych,
rozproszone usługi internetowe.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Przykładowe obszary zastosowań:
tworzenie systemów informatycznych
przedsiębiorstw,
usług bankowych i finansowych,
rozproszone usługi internetowe.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Przykładowe obszary zastosowań:
tworzenie systemów informatycznych
przedsiębiorstw,
usług bankowych i finansowych,
rozproszone usługi internetowe.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
UML – Unified Modeling Language
Przykładowe obszary zastosowań:
tworzenie systemów informatycznych
przedsiębiorstw,
usług bankowych i finansowych,
rozproszone usługi internetowe.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Przykłady diagramów
Rysunek:
Diagram klas
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Przykłady diagramów
Rysunek:
Diagram klas modelujący strukturę firmy
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia – służy do obrazowania zachowania
systemu, podsystemu lub klasy w taki sposób, żeby
użytkownicy mogli zrozumieć, jak z tego bytu korzystać, a
programiści mogli go zaimplementować.
Sekwencji
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji – służy do obrazowania dynamicznych aspektów
systemu. Demonstruje kolejność komunikatów w czasie,
które przesyłają między sobą obiekty.
Klas
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas – służy do obrazowania statycznych aspektów
systemu. Bierze się w nim pod uwagę wymagania
funkcjonalne (usługi), jakie system powinien udostępniać
swoim użytkownikom.
Aktywności
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Ważniejsze diagramy
W wersji 2.0 wyróżnia się 13 rodzaji diagramów głównych i 4
abstrakcyjne.
Najczęściej używane diagramy:
Przypadków użycia
Sekwencji
Klas
Aktywności – modeluje dynamiczne aspekty systemu.
Demonstrują przepływ sterowania od operacji do operacji.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Nacisk kładzie się na przetwarzanie, tzn. zbudowania algo-
rytmu potrzebnego do wykonania wymaganych obliczeń.
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Uwypukla powiązanie danych z procedurami oraz ukrywa
dane, które wykorzystywane są tylko w pewnych blokach
obliczeniowych reprezentowanych przez moduły.
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Zakłada możliwość definiowania typów, które mają te same
własności jak typy wbudowane.
Programowanie obiektowe
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Tworzenie struktur pochodnych poprzez dziedziczenie z
możliwością modyfikacji dzięki polimorfizmowi. Hermetyza-
cja wybranych struktur.
Programowanie uogólnione
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Zestawienie stylów programowania
Ważniejsze style
Programowanie proceduralne
Programowanie modularne
Programowanie z abstrakcją danych
Programowanie obiektowe
Programowanie uogólnione
Umożliwia tworzenie parametryzowanych struktur i funk-
cji/procedur, dla których parametrami jest typ danych.
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
C++ nie jest nadzbiorem C
Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.
ANSI C:
const int Zm=23; ≡ extern const int Zm=23;
ANSI/ISO C++:
const int Zm=23; ≡ static const int Zm=23;
Rozmiary stałych znakowych:
ANSI C:
sizeof (’a’) ≡ sizeof (int)
ANSI/ISO C++:
sizeof (’a’) ≡ sizeof (char)
Nie zadeklarowane funkcje:
ANSI C:
przyjmowane jest automatycznie int fun(...).
ANSI/ISO C++:
jest to niedopuszczalne.
Deklaracja extern int fun():
ANSI C:
równoważna extern int fun(...).
ANSI/ISO C++:
extern int fun(void).
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
C++ nie jest nadzbiorem C
Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.
ANSI C:
const int Zm=23; ≡ extern const int Zm=23;
ANSI/ISO C++:
const int Zm=23; ≡ static const int Zm=23;
Rozmiary stałych znakowych:
ANSI C:
sizeof (’a’) ≡ sizeof (int)
ANSI/ISO C++:
sizeof (’a’) ≡ sizeof (char)
Nie zadeklarowane funkcje:
ANSI C:
przyjmowane jest automatycznie int fun(...).
ANSI/ISO C++:
jest to niedopuszczalne.
Deklaracja extern int fun():
ANSI C:
równoważna extern int fun(...).
ANSI/ISO C++:
extern int fun(void).
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
C++ nie jest nadzbiorem C
Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.
ANSI C:
const int Zm=23; ≡ extern const int Zm=23;
ANSI/ISO C++:
const int Zm=23; ≡ static const int Zm=23;
Rozmiary stałych znakowych:
ANSI C:
sizeof (’a’) ≡ sizeof (int)
ANSI/ISO C++:
sizeof (’a’) ≡ sizeof (char)
Nie zadeklarowane funkcje:
ANSI C:
przyjmowane jest automatycznie int fun(...).
ANSI/ISO C++:
jest to niedopuszczalne.
Deklaracja extern int fun():
ANSI C:
równoważna extern int fun(...).
ANSI/ISO C++:
extern int fun(void).
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
C++ nie jest nadzbiorem C
Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania.
ANSI C:
const int Zm=23; ≡ extern const int Zm=23;
ANSI/ISO C++:
const int Zm=23; ≡ static const int Zm=23;
Rozmiary stałych znakowych:
ANSI C:
sizeof (’a’) ≡ sizeof (int)
ANSI/ISO C++:
sizeof (’a’) ≡ sizeof (char)
Nie zadeklarowane funkcje:
ANSI C:
przyjmowane jest automatycznie int fun(...).
ANSI/ISO C++:
jest to niedopuszczalne.
Deklaracja extern int fun():
ANSI C:
równoważna extern int fun(...).
ANSI/ISO C++:
extern int fun(void).
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Programowanie w C – prosty przykład
#include<stdio.h>
typedef struct LZespolona { /∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ∗/
double
re, im;
} LiczbaZespolona; /∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ∗/
LiczbaZespolona
Dodaj( LiczbaZespolona
Z1, LiczbaZespolona
Z2)
{
Z2.re += Z1.re;
Z2.im += Z1.im;
return Z2;
}
int main()
{
struct LZespolona
A, B;
A.im = 1;
A.re = 2;
B = A;
A = Dodaj(A,B);
printf(”%g %gi\n”,A.re,A.im);
return 0;
}
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozszerzenie struktur do klas w C++
#include<iostream>
struct LiczbaZespolona { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
double
re, im;
LiczbaZespolona Dodaj( LiczbaZespolona Z );
}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LiczbaZespolona LiczbaZespolona::Dodaj( LiczbaZespolona Z )
{
Z.re += re;
Z.im += im;
return Z;
}
int main()
{
LiczbaZespolona
A, B;
A.im = 1;
A.re = 2;
B = A;
A = A.Dodaj(B)
;
std::cout << A.re << ” ” << A.im << std::endl;
}
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozszerzenie struktur do klas w C++
#include<iostream>
using namespace std;
struct LiczbaZespolona { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
double
re, im;
LiczbaZespolona Dodaj( LiczbaZespolona Z );
}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LiczbaZespolona LiczbaZespolona::Dodaj( LiczbaZespolona Z )
{
Z.re += re;
Z.im += im;
return Z;
}
int main()
{
LiczbaZespolona
A, B;
A.im = 1;
A.re = 2;
B = A;
A = A.Dodaj(B)
;
cout << A.re << ” ” << A.im << endl;
}
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Rozszerzenie struktur do klas w C++ z operatorami
#include<iostream>
using namespace std;
struct LiczbaZespolona { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
double
re, im;
LiczbaZespolona operator + ( LiczbaZespolona Z );
}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LiczbaZespolona LiczbaZespolona::operator + ( LiczbaZespolona Z )
{
Z.re += re;
Z.im += im;
return Z;
}
int main()
{
LiczbaZespolona
A, B;
A.im = 1;
A.re = 2;
B = A;
A = A + B
;
cout << A.re << ” ” << A.im << endl;
}
Programowanie obiektowe
Język C i C++ – najistotniejsze różnice
Jawne wywołanie operatora
#include<iostream>
using namespace std;
struct LiczbaZespolona { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
double
re, im;
LiczbaZespolona operator + ( LiczbaZespolona Z );
}; // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
LiczbaZespolona LiczbaZespolona::operator + ( LiczbaZespolona Z )
{
Z.re += re;
Z.im += im;
return Z;
}
int main()
{
LiczbaZespolona
A, B;
A.im = 1;
A.re = 2;
B = A;
A = A.operator+(B)
;
cout << A.re << ” ” << A.im << endl;
}
Programowanie obiektowe