Style programowania, geneza języka C++
|
|
- Ryszard Markiewicz
- 6 lat temu
- Przeglądów:
Transkrypt
1 Style programowania, geneza języka C++ Bogdan Kreczmer Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Programowanie obiektowe Copyright c 2007 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat wizualizacji danych sensorycznych. 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 Style programowania, geneza języka C++
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: Programowanie obiektowe Style programowania, geneza języka C++
3 1 Style programowania 2 Historia narodzin Motywacja Chronologia Związki z C 3 Wartości domyślne Konwencja nazw plików nagłówkowych
4 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione
5 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione
6 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione
7 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione
8 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione
9 Ważniejsze style Style programowania Programowanie proceduralne Nacisk kładzie się na przetwarzanie, tzn. zbudowania algorytmu potrzebnego do wykonania wymaganych obliczeń. Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione
10 Ważniejsze style Style programowania 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
11 Ważniejsze style Style programowania 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
12 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Tworzenie struktur pochodnych poprzez dziedziczenie z możliwością modyfikacji dzięki polimorfizmowi. Hermetyzacja wybranych struktur. Programowanie uogólnione
13 Ważniejsze style Style programowania Programowanie proceduralne Programowanie modularne Programowanie z abstrakcją danych Programowanie obiektowe Programowanie uogólnione Umożliwia tworzenie parametryzowanych struktur i funkcji/procedur, dla których parametrami jest typ danych.
14 Programowanie z wykorzystaniem podprogramów
15 Programowanie z wykorzystaniem podprogramów Styl charakterystyczny dla przypadku wykorzystywania asemblera oraz wczesnej wersji Basic a.
16 Programowanie z wykorzystaniem podprogramów
17 Programowanie z wykorzystaniem podprogramów Wielość wzajemnych powiązań prowadzi do tworzenia się nieczytelnych konstrukcji programów.
18 Programowanie proceduralne
19 Programowanie proceduralne Zmienne lokalne poprawiają wykorzystanie pamięci oraz czytelność programu.
20 Programowanie proceduralne Paradygmat programowania proceduralnego:
21 Programowanie proceduralne Paradygmat programowania proceduralnego: Zdecyduj jakie chcesz mieć procedury; stosuj najlepsze algorytmy jakie możesz znaleźć.
22 Programowanie proceduralne Paradygmat programowania proceduralnego: Zdecyduj jakie chcesz mieć procedury; stosuj najlepsze algorytmy jakie możesz znaleźć. Przykład języków programowania wspierających ten paradygmat: Pascal, C, Java, C++, Python, Perl itp.
23 Programowanie proceduralne Podstawowe wady czystego programowania proceduralnego. Brak możliwości wyróżnienia powiązań między strukturami danych, a procedurami operującymi na nich. Konieczność stosowania różnych nazw procedur nawet w przypadku, gdy wykonują te same operacje, a jedyną różnicą jest typ danych, na których wykonywana jest ta operacja. Umieszczanie wszystkich elementów w jednakowym obszarze zasięgu ważności definicji uniemożliwia hermetyzację wybranych partii programy. Nie pozwala to na łatwe rozdzielenia całego zadania na poszczególne podzadania.
24 Programowanie proceduralne Podstawowe wady czystego programowania proceduralnego. Brak możliwości wyróżnienia powiązań między strukturami danych, a procedurami operującymi na nich. Konieczność stosowania różnych nazw procedur nawet w przypadku, gdy wykonują te same operacje, a jedyną różnicą jest typ danych, na których wykonywana jest ta operacja. Umieszczanie wszystkich elementów w jednakowym obszarze zasięgu ważności definicji uniemożliwia hermetyzację wybranych partii programy. Nie pozwala to na łatwe rozdzielenia całego zadania na poszczególne podzadania.
25 Programowanie proceduralne Podstawowe wady czystego programowania proceduralnego. Brak możliwości wyróżnienia powiązań między strukturami danych, a procedurami operującymi na nich. Konieczność stosowania różnych nazw procedur nawet w przypadku, gdy wykonują te same operacje, a jedyną różnicą jest typ danych, na których wykonywana jest ta operacja. Umieszczanie wszystkich elementów w jednakowym obszarze zasięgu ważności definicji uniemożliwia hermetyzację wybranych partii programy. Nie pozwala to na łatwe rozdzielenia całego zadania na poszczególne podzadania.
26 Programowanie proceduralne Podstawowe wady czystego programowania proceduralnego. Brak możliwości wyróżnienia powiązań między strukturami danych, a procedurami operującymi na nich. Konieczność stosowania różnych nazw procedur nawet w przypadku, gdy wykonują te same operacje, a jedyną różnicą jest typ danych, na których wykonywana jest ta operacja. Umieszczanie wszystkich elementów w jednakowym obszarze zasięgu ważności definicji uniemożliwia hermetyzację wybranych partii programy. Nie pozwala to na łatwe rozdzielenia całego zadania na poszczególne podzadania.
27 Programowanie modularne
28 Programowanie modularne Modułem nazywamy zbiór powiązanych ze sobą procedur, struktur danych oraz zmiennych i wyodrębnionych w postaci osobnej konstrukcji językowej lub translacyjnej.
29 Programowanie modularne Modułem nazywamy zbiór powiązanych ze sobą procedur, struktur danych oraz zmiennych i wyodrębnionych w postaci osobnej konstrukcji językowej lub translacyjnej. To powiązanie pozwala skupić w jednym miejscu struktury danych oraz procedury i funkcje obsługujące te struktury.
30 Programowanie modularne
31 Programowanie modularne Ten typ programowania pozwala ukryć pomocnicze funkcje i struktury danych.
32 Programowanie modularne Ten typ programowania pozwala ukryć pomocnicze funkcje i struktury danych. Możliwe jest dość precyzyjne określenie co jest udostępniane na zewnątrz i z czego dany moduł korzysta. Pozwala to ukryć ewentualne późniejsze modyfikacje struktur wewnętrznych.
33 Programowanie modularne Paradygmat programowania modularnego:
34 Programowanie modularne Paradygmat programowania modularnego: Zdecyduj jakie chcesz mieć moduły; podziel program w taki sposób, aby ukryć dane w modułach.
35 Programowanie modularne Paradygmat programowania modularnego: Zdecyduj jakie chcesz mieć moduły; podziel program w taki sposób, aby ukryć dane w modułach. Przykład języków programowania wspierających ten paradygmat: Modula 2, Ada, C, Java, C++ itp.
36 Programowanie modularne najważniejsze cechy Ukrywanie funkcji, struktur danych oraz zmiennych mających znacznie lokalne w danym module. Możliwość całkowitego ukrycia udostępnianych struktur danych. Na zewnątrz modułu widoczne są jedynie ich cechy i własności. Odwoływanie się do konkretnego egzemplarza tworzonej struktury danych realizowane jest poprzez deskryptory. Wadą tej techniki jest brak możliwości kontroli zgodności typów na etapie kompilacji.
37 Programowanie modularne najważniejsze cechy Ukrywanie funkcji, struktur danych oraz zmiennych mających znacznie lokalne w danym module. Możliwość całkowitego ukrycia udostępnianych struktur danych. Na zewnątrz modułu widoczne są jedynie ich cechy i własności. Odwoływanie się do konkretnego egzemplarza tworzonej struktury danych realizowane jest poprzez deskryptory. Wadą tej techniki jest brak możliwości kontroli zgodności typów na etapie kompilacji.
38 Programowanie modularne najważniejsze cechy Ukrywanie funkcji, struktur danych oraz zmiennych mających znacznie lokalne w danym module. Możliwość całkowitego ukrycia udostępnianych struktur danych. Na zewnątrz modułu widoczne są jedynie ich cechy i własności. Odwoływanie się do konkretnego egzemplarza tworzonej struktury danych realizowane jest poprzez deskryptory. Wadą tej techniki jest brak możliwości kontroli zgodności typów na etapie kompilacji.
39 Programowanie modularne najważniejsze cechy Ukrywanie funkcji, struktur danych oraz zmiennych mających znacznie lokalne w danym module. Możliwość całkowitego ukrycia udostępnianych struktur danych. Na zewnątrz modułu widoczne są jedynie ich cechy i własności. Odwoływanie się do konkretnego egzemplarza tworzonej struktury danych realizowane jest poprzez deskryptory. Wadą tej techniki jest brak możliwości kontroli zgodności typów na etapie kompilacji.
40 Programowanie modularne najważniejsze cechy Ukrywanie funkcji, struktur danych oraz zmiennych mających znacznie lokalne w danym module. Możliwość całkowitego ukrycia udostępnianych struktur danych. Na zewnątrz modułu widoczne są jedynie ich cechy i własności. Odwoływanie się do konkretnego egzemplarza tworzonej struktury danych realizowane jest poprzez deskryptory. Wadą tej techniki jest brak możliwości kontroli zgodności typów na etapie kompilacji.
41 Programowanie modularne najważniejsze cechy Ukrywanie funkcji, struktur danych oraz zmiennych mających znacznie lokalne w danym module. Możliwość całkowitego ukrycia udostępnianych struktur danych. Na zewnątrz modułu widoczne są jedynie ich cechy i własności. Odwoływanie się do konkretnego egzemplarza tworzonej struktury danych realizowane jest poprzez deskryptory. Wadą tej techniki jest brak możliwości kontroli zgodności typów na etapie kompilacji.
42 Programowanie modularne najważniejsze cechy Możliwość odizolowania się od nazw funkcji i zmiennych modułu używanych w innych modułach. Możliwość precyzyjnego określenia co z danego modułu jest widoczne i udostępniane na zewnątrz, a co nie. Mechanizm ten pozwala również określić co dany moduł importuje z innych modułów. Łatwiejsza organizacja pracy zespołowej.
43 Programowanie modularne najważniejsze cechy Możliwość odizolowania się od nazw funkcji i zmiennych modułu używanych w innych modułach. Możliwość precyzyjnego określenia co z danego modułu jest widoczne i udostępniane na zewnątrz, a co nie. Mechanizm ten pozwala również określić co dany moduł importuje z innych modułów. Łatwiejsza organizacja pracy zespołowej.
44 Programowanie modularne najważniejsze cechy Możliwość odizolowania się od nazw funkcji i zmiennych modułu używanych w innych modułach. Możliwość precyzyjnego określenia co z danego modułu jest widoczne i udostępniane na zewnątrz, a co nie. Mechanizm ten pozwala również określić co dany moduł importuje z innych modułów. Łatwiejsza organizacja pracy zespołowej.
45 Programowanie modularne podsumowanie Programowanie modularne umożliwia centralizację wszystkich danych jednego typu pod kontrolą jednego modułu będącego zarządcą danego typu. Daje to jednak wciąż znacząco gorsze wsparcie niż dla typów wbudowanych.
46 Programowanie modularne podsumowanie Programowanie modularne umożliwia centralizację wszystkich danych jednego typu pod kontrolą jednego modułu będącego zarządcą danego typu. Daje to jednak wciąż znacząco gorsze wsparcie niż dla typów wbudowanych. Wady czystego programowania modularnego: brak możliwości stosowania operatorów, w przypadku stosowania deskryptorów brak możliwości ścisłej kontroli typów na poziomie kompilacji, brak możliwości określenia dopuszczalności domyślnych konwersji oraz ich zdefiniowania.
47 Programowanie modularne podsumowanie Programowanie modularne umożliwia centralizację wszystkich danych jednego typu pod kontrolą jednego modułu będącego zarządcą danego typu. Daje to jednak wciąż znacząco gorsze wsparcie niż dla typów wbudowanych. Wady czystego programowania modularnego: brak możliwości stosowania operatorów, w przypadku stosowania deskryptorów brak możliwości ścisłej kontroli typów na poziomie kompilacji, brak możliwości określenia dopuszczalności domyślnych konwersji oraz ich zdefiniowania.
48 Programowanie modularne podsumowanie Programowanie modularne umożliwia centralizację wszystkich danych jednego typu pod kontrolą jednego modułu będącego zarządcą danego typu. Daje to jednak wciąż znacząco gorsze wsparcie niż dla typów wbudowanych. Wady czystego programowania modularnego: brak możliwości stosowania operatorów, w przypadku stosowania deskryptorów brak możliwości ścisłej kontroli typów na poziomie kompilacji, brak możliwości określenia dopuszczalności domyślnych konwersji oraz ich zdefiniowania.
49 Programowanie modularne podsumowanie Programowanie modularne umożliwia centralizację wszystkich danych jednego typu pod kontrolą jednego modułu będącego zarządcą danego typu. Daje to jednak wciąż znacząco gorsze wsparcie niż dla typów wbudowanych. Wady czystego programowania modularnego: brak możliwości stosowania operatorów, w przypadku stosowania deskryptorów brak możliwości ścisłej kontroli typów na poziomie kompilacji, brak możliwości określenia dopuszczalności domyślnych konwersji oraz ich zdefiniowania.
50 Abstrakcja typów danych
51 Abstrakcja typów danych Podejście oparte na abstrakcji danych pozwala traktować na równi typy wbudowane i typy definiowane przez programistę. Pozwala również na bezpośrednie odwoływanie się do struktur danych i dokonywanych na nich operacji (w odróżnieniu od programowania modułowego).
52 Abstrakcja typów danych Podejście oparte na abstrakcji danych pozwala traktować na równi typy wbudowane i typy definiowane przez programistę. Pozwala również na bezpośrednie odwoływanie się do struktur danych i dokonywanych na nich operacji (w odróżnieniu od programowania modułowego).
53 Abstrakcja typów danych Paradygmat programowania z zastosowaniem abstrakcji danych:
54 Abstrakcja typów danych Paradygmat programowania z zastosowaniem abstrakcji danych: Zdecyduj jakie chcesz mieć typy; dla każdego typu dostarcz pełny zbiór operacji.
55 Abstrakcja typów danych Paradygmat programowania z zastosowaniem abstrakcji danych: Zdecyduj jakie chcesz mieć typy; dla każdego typu dostarcz pełny zbiór operacji. Przykład języków programowania wspierających ten paradygmat: Ada, Clu, C++ itp.
56 Abstrakcja typów danych zalety i wady Programowanie z wykorzystaniem abstrakcji danych pozwala na tworzenie struktur, które mogą być dobrze izolowane od reszty programu. Zawierają one zarówno odpowiednie pola danych, jak też zdefiniowane metody i operacje dokonywane na nich.
57 Abstrakcja typów danych zalety i wady Programowanie z wykorzystaniem abstrakcji danych pozwala na tworzenie struktur, które mogą być dobrze izolowane od reszty programu. Zawierają one zarówno odpowiednie pola danych, jak też zdefiniowane metody i operacje dokonywane na nich.
58 Abstrakcja typów danych zalety i wady Programowanie z wykorzystaniem abstrakcji danych pozwala na tworzenie struktur, które mogą być dobrze izolowane od reszty programu. Zawierają one zarówno odpowiednie pola danych, jak też zdefiniowane metody i operacje dokonywane na nich. Podstawową wadą jest brak elastyczności.
59 Abstrakcja typów danych zalety i wady Programowanie z wykorzystaniem abstrakcji danych pozwala na tworzenie struktur, które mogą być dobrze izolowane od reszty programu. Zawierają one zarówno odpowiednie pola danych, jak też zdefiniowane metody i operacje dokonywane na nich. Podstawową wadą jest brak elastyczności. Przykład: Konstruując typy MacierzWJ (transformacje wektorów wyrażonych we współrzędnych jednorodnych) oraz Macierz4x4 należy zdefiniować oddzielne struktury danych wraz z metodami i operacjami, choć MacierzWJ jest jedynie uszczegółowieniem typu Macierz4x4.
60 Abstrakcja typów danych zalety i wady Programowanie z wykorzystaniem abstrakcji danych pozwala na tworzenie struktur, które mogą być dobrze izolowane od reszty programu. Zawierają one zarówno odpowiednie pola danych, jak też zdefiniowane metody i operacje dokonywane na nich. Podstawową wadą jest brak elastyczności. Przykład: Konstruując typy MacierzWJ (transformacje wektorów wyrażonych we współrzędnych jednorodnych) oraz Macierz4x4 należy zdefiniować oddzielne struktury danych wraz z metodami i operacjami, choć MacierzWJ jest jedynie uszczegółowieniem typu Macierz4x4.
61 Programowanie obiektowe
62 Programowanie obiektowe Podejście oparte na podejściu obiektowym umożliwia budowanie nowych typów danych na bazie wcześniej zdefiniowanych struktur (dziedziczenie).
63 Programowanie obiektowe Paradygmat programowania programowania obiektowego:
64 Programowanie obiektowe Paradygmat programowania programowania obiektowego: Zdecyduj jakie chcesz mieć klasy; dla każdej klasy dostarcz pełny zbiór operacji; korzystając z mechanizmu dziedziczenia, jawnie wskaż to, co jest wspólne.
65 Programowanie obiektowe Paradygmat programowania programowania obiektowego: Zdecyduj jakie chcesz mieć klasy; dla każdej klasy dostarcz pełny zbiór operacji; korzystając z mechanizmu dziedziczenia, jawnie wskaż to, co jest wspólne. Przykład języków programowania wspierających ten paradygmat: C++, Java, Python itp.
66 Programowanie obiektowe podstawowe cechy dziedziczenie możliwość tworzenia nowych struktur danych z wykorzystaniem struktur wcześniej zdefiniowanych wraz ze wszystkimi ich atrybutami i metodami. hermetyzacja możliwość ograniczanie dostępu do wybranych struktur danych. Pozwala to definiować ściśle określony interfejs dostępu do tych struktur. polimorfizm możliwość modyfikacji metod (określanych mianem metod wirtualnych) w strukturach bazowych poprzez ich redefiniowanie w strukturach pochodnych.
67 Programowanie obiektowe podstawowe cechy dziedziczenie możliwość tworzenia nowych struktur danych z wykorzystaniem struktur wcześniej zdefiniowanych wraz ze wszystkimi ich atrybutami i metodami. hermetyzacja możliwość ograniczanie dostępu do wybranych struktur danych. Pozwala to definiować ściśle określony interfejs dostępu do tych struktur. polimorfizm możliwość modyfikacji metod (określanych mianem metod wirtualnych) w strukturach bazowych poprzez ich redefiniowanie w strukturach pochodnych.
68 Programowanie obiektowe podstawowe cechy dziedziczenie możliwość tworzenia nowych struktur danych z wykorzystaniem struktur wcześniej zdefiniowanych wraz ze wszystkimi ich atrybutami i metodami. hermetyzacja możliwość ograniczanie dostępu do wybranych struktur danych. Pozwala to definiować ściśle określony interfejs dostępu do tych struktur. polimorfizm możliwość modyfikacji metod (określanych mianem metod wirtualnych) w strukturach bazowych poprzez ich redefiniowanie w strukturach pochodnych.
69 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady?
70 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady? Ależ tak! Jest wciąż mało elastyczne!!!! :-0
71 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady? Ależ tak! Jest wciąż mało elastyczne!!!! :-0
72 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady? Ależ tak! Jest wciąż mało elastyczne!!!! :-0 We wcześniejszym przykładzie typy Macierz4x4 i MacierzWJ zostały zdefiniowane dla typu float. Aby zdefiniować je dla typu double należy wszystko na nowo przepisać. :-(
73 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady? Ależ tak! Jest wciąż mało elastyczne!!!! :-0 We wcześniejszym przykładzie typy Macierz4x4 i MacierzWJ zostały zdefiniowane dla typu float. Aby zdefiniować je dla typu double należy wszystko na nowo przepisać. :-(
74 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady? Ależ tak! Jest wciąż mało elastyczne!!!! :-0 We wcześniejszym przykładzie typy Macierz4x4 i MacierzWJ zostały zdefiniowane dla typu float. Aby zdefiniować je dla typu double należy wszystko na nowo przepisać. :-( Czy nie można było by stworzyć ogólnych mechanizmów nie tylko definiowania struktur, ale również pisania funkcji? Czy mechanizmy te mogłyby być na tyle ogólne, aby np. napisać funkcję umożliwiającą sortowanie dowolnych struktur danych?
75 Programowanie obiektowe podstawowe cechy Czy programowanie obiektowe może mieć jakieś wady? Ależ tak! Jest wciąż mało elastyczne!!!! :-0 We wcześniejszym przykładzie typy Macierz4x4 i MacierzWJ zostały zdefiniowane dla typu float. Aby zdefiniować je dla typu double należy wszystko na nowo przepisać. :-( Czy nie można było by stworzyć ogólnych mechanizmów nie tylko definiowania struktur, ale również pisania funkcji? Czy mechanizmy te mogłyby być na tyle ogólne, aby np. napisać funkcję umożliwiającą sortowanie dowolnych struktur danych?
76 Programowanie uogólnione Przykład z biblioteki C realizacji uogólnionych algorytmów dla tworzenia, manipulowania i przeszukiwania struktury drzewa binarnego. #include <search.h> void *tsearch(const void *key, void **rootp, int(*compar)(const void *, const void *)); void *tfind(const void *key, const void **rootp, int(*compar)(const void *, const void *)); void *tdelete(const void *key, void **rootp, int(*compar)(const void *, const void *)); void twalk(const void *root, void(*action)(const void *nodep, const VISIT which, const int depth));
77 Programowanie uogólnione Przykład z biblioteki C realizacji uogólnionych algorytmów dla tworzenia, manipulowania i przeszukiwania struktury drzewa binarnego. #include <search.h> void *tsearch(const void *key, void **rootp, int(*compar)(const void *, const void *)); void *tfind(const void *key, const void **rootp, int(*compar)(const void *, const void *)); void *tdelete(const void *key, void **rootp, int(*compar)(const void *, const void *)); void twalk(const void *root, void(*action)(const void *nodep, const VISIT which, const int depth));
78 Programowanie uogólnione Na poziomie języka C ideę programowania uogólnionego realizuje się poprzez rzutowanie z typów void*, void** itp.
79 Programowanie uogólnione Na poziomie języka C ideę programowania uogólnionego realizuje się poprzez rzutowanie z typów void*, void** itp. Najistotniejszą wadą tego rozwiązania jest brak kontroli typów na etapie kompilacji.
80 Programowanie uogólnione
81 Programowanie uogólnione Programowanie uogólnione pozwala tworzyć uniwersalne struktury, w których nie ma (lub są one zminimalizowane) ograniczeń na typ pól. Daje możliwość skoncentrowania się na ogólnych mechanizmach manipulowania strukturami danych. Można stworzyć np. wzorzec listy.
82 Programowanie uogólnione Programowanie uogólnione pozwala tworzyć uniwersalne struktury, w których nie ma (lub są one zminimalizowane) ograniczeń na typ pól. Daje możliwość skoncentrowania się na ogólnych mechanizmach manipulowania strukturami danych. Można stworzyć np. wzorzec listy.
83 Programowanie uogólnione
84 Programowanie uogólnione Konkretyzacja typu następuje w momencie odwołania się do wzorca wraz ze wszystkimi parametrami. Są one nazwami typów składowych. Odwołanie następuje wraz z deklaracją obiektu danej klasy.
85 Programowanie uogólnione Konkretyzacja typu następuje w momencie odwołania się do wzorca wraz ze wszystkimi parametrami. Są one nazwami typów składowych. Odwołanie następuje wraz z deklaracją obiektu danej klasy.
86 Programowanie uogólnione Konkretyzacja typu następuje w momencie odwołania się do wzorca wraz ze wszystkimi parametrami. Są one nazwami typów składowych. Odwołanie następuje wraz z deklaracją obiektu danej klasy.
87 Programowanie uogólnione Paradygmat programowania programowania uogólnionego:
88 Programowanie uogólnione Paradygmat programowania programowania uogólnionego: Zdecyduj jakie chcesz mieć algorytmy; parametryzuj je w taki sposób, by działały dla różnych typów i struktur.
89 Programowanie uogólnione Paradygmat programowania programowania uogólnionego: Zdecyduj jakie chcesz mieć algorytmy; parametryzuj je w taki sposób, by działały dla różnych typów i struktur. Przykład języków programowania wspierających ten paradygmat: C++ Programowanie uogólnione jest podstawową techniką programowania użytą przy tworzeniu standardowej biblioteki szablonów (STL), która jest jednym z podstawowych składników ANSI/ISO C++.
90 Programowanie uogólnione Paradygmat programowania programowania uogólnionego: Zdecyduj jakie chcesz mieć algorytmy; parametryzuj je w taki sposób, by działały dla różnych typów i struktur. Przykład języków programowania wspierających ten paradygmat: C++ Programowanie uogólnione jest podstawową techniką programowania użytą przy tworzeniu standardowej biblioteki szablonów (STL), która jest jednym z podstawowych składników ANSI/ISO C++.
91 Tło akcji Style programowania Historia narodzin Motywacja Chronologia Związki z C Bezpośrednim przyczynkiem do powstania koncepcji języka C++ były prace Stroustrupa w Cambridge nad doktoratem. W trakcie swoich prac miał zbadać różne organizacje systemowego oprogramowania w systemach rozproszonych.
92 Zdarzenia Style programowania Historia narodzin Motywacja Chronologia Związki z C Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.
93 Zdarzenia Style programowania Historia narodzin Motywacja Chronologia Związki z C Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.
94 Zdarzenia Style programowania Historia narodzin Motywacja Chronologia Związki z C Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.
95 Zdarzenia Style programowania Historia narodzin Motywacja Chronologia Związki z C Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.
96 Epilog Style programowania Historia narodzin Motywacja Chronologia Związki z C Po zakończeniu prac nad doktoratem Stroustrup postanawia stworzyć język programowania, który łączyłby koncepcje klas z Simuli oraz elastyczność tego języka z efektywnością kodu języka BCPL.
97 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).
98 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).
99 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).
100 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).
101 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).
102 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Pojęcie klasy było zasadniczym elementem różniącym sztywny Pascal od elastycznej Simuli. Wyczerpujące sprawdzanie zgodności typów w Simuli sprawiało, że liczba problemów i błędów nie wzrastała szybciej niż liniowo wraz ze wzrostem programu.
103 Niektóre spostrzeżenia Historia narodzin Motywacja Chronologia Związki z C Pojęcie klasy było zasadniczym elementem różniącym sztywny Pascal od elastycznej Simuli. Wyczerpujące sprawdzanie zgodności typów w Simuli sprawiało, że liczba problemów i błędów nie wzrastała szybciej niż liniowo wraz ze wzrostem programu.
104 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C (Grudzień) Ukazanie się kompilatora GNU C++.
105 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C (Grudzień) Ukazanie się kompilatora GNU C++.
106 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C (Grudzień) Ukazanie się kompilatora GNU C++.
107 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C (Grudzień) Ukazanie się kompilatora GNU C++.
108 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C (Grudzień) Ukazanie się kompilatora GNU C++.
109 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1989 (Grudzień) Powstanie zespołu ANSI X3J16 do spraw normalizacji języka C (Maj) Powstawnie w firmie Borland pierwszej implementacji języka C++. (Lipiec) Przyjęcie koncepcji wzorców. (Listopad) Przyjęcie koncepcji wyjątków (Luty) Powstanie pierwszej implementacji języka C++ (zawierającej wzorce i wyjątki) w firmie DEC. (Marzec) Powstanie pierwszej implementacji języka C++ w firmie Microsoft. (Maj) Powstanie pierwszej implementacji języka C++ w firmie IBM.
110 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1989 (Grudzień) Powstanie zespołu ANSI X3J16 do spraw normalizacji języka C (Maj) Powstawnie w firmie Borland pierwszej implementacji języka C++. (Lipiec) Przyjęcie koncepcji wzorców. (Listopad) Przyjęcie koncepcji wyjątków (Luty) Powstanie pierwszej implementacji języka C++ (zawierającej wzorce i wyjątki) w firmie DEC. (Marzec) Powstanie pierwszej implementacji języka C++ w firmie Microsoft. (Maj) Powstanie pierwszej implementacji języka C++ w firmie IBM.
111 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1989 (Grudzień) Powstanie zespołu ANSI X3J16 do spraw normalizacji języka C (Maj) Powstawnie w firmie Borland pierwszej implementacji języka C++. (Lipiec) Przyjęcie koncepcji wzorców. (Listopad) Przyjęcie koncepcji wyjątków (Luty) Powstanie pierwszej implementacji języka C++ (zawierającej wzorce i wyjątki) w firmie DEC. (Marzec) Powstanie pierwszej implementacji języka C++ w firmie Microsoft. (Maj) Powstanie pierwszej implementacji języka C++ w firmie IBM.
112 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1993 (Marzec) Przyjęcie koncepcji identyfikowania typu podczas wykonywania programu. (Lipiec) Przyjęcie koncepcji przestrzeni nazw (Wrzesień) Przyjęcie standardu ANSI/ISO języka C++.
113 Ważniejsze daty Style programowania Historia narodzin Motywacja Chronologia Związki z C 1993 (Marzec) Przyjęcie koncepcji identyfikowania typu podczas wykonywania programu. (Lipiec) Przyjęcie koncepcji przestrzeni nazw (Wrzesień) Przyjęcie standardu ANSI/ISO języka C++.
114 Genealogia Style programowania Historia narodzin Motywacja Chronologia Związki z C
115 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
116 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
117 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
118 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
119 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
120 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
121 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
122 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe elementy w stosunku do języka C: klasy, klasy pochodne (bez funkcji wirtualnych), konstruktory i destruktory, funkcje wywołania i powrotu (później usunięte), sterowanie dostępem do obiektów publicznych i prywatnych, klasy zaprzyjaźnione, sprawdzanie typów i przekształcanie argumentów funkcji.
123 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania.
124 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania.
125 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania.
126 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania.
127 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania. Kilka faktów: Słowo kluczowe class pochodzi z Simuli (podobnie jak notacja wskaźnika this). Zapis funkcja(void) w ANSI C pochodzi z języka C z Klasami.
128 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania. Kilka faktów: Słowo kluczowe class pochodzi z Simuli (podobnie jak notacja wskaźnika this). Zapis funkcja(void) w ANSI C pochodzi z języka C z Klasami.
129 Język C z klasami Style programowania Historia narodzin Motywacja Chronologia Związki z C Nowe własności dodane w 1981: funkcje rozwijane (ang. inline), argumenty domyślne, przeciążenia operatora przypisania. Kilka faktów: Słowo kluczowe class pochodzi z Simuli (podobnie jak notacja wskaźnika this). Zapis funkcja(void) w ANSI C pochodzi z języka C z Klasami.
130 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym
131 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym
132 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym
133 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym
134 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym
135 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym nie ma wewnętrznych ograniczeń wykluczających możliwość napisania jakiegoś rodzaju programu, tzn. można korzystać w nim z większości technik programowania. C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym
136 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym semantyka języka znajduje się na niskim poziomie, tzn. podstawowe pojęcia języka odzwierciedlają podstawowe pojęcia tradycyjnego komputera. C jest językiem szeroko dostępnym C jest językiem przenośnym
137 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym implementacje tego języka istnieją zarówno dla mikrokomputerów jak też dla dużych superkomputerów. C jest językiem przenośnym
138 Dlaczego C Style programowania Historia narodzin Motywacja Chronologia Związki z C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym programy napisane w C zazwyczaj nie można automatycznie przenosić z jednego systemu operacyjnego do drugiego. Jednak przenośność z uwzględnieniem odpowiednich uwarunkowań jest możliwa.
139 Cel Style programowania Wartości domyślne Konwencja nazw plików nagłówkowych Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol:
140 Cel Style programowania Wartości domyślne Konwencja nazw plików nagłówkowych Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol:
141 Cel Style programowania Wartości domyślne Konwencja nazw plików nagłówkowych Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol:
142 Cel Style programowania Wartości domyślne Konwencja nazw plików nagłówkowych Zbudujmy program, który umożliwi wyliczanie współrzędnych punktów dla rodziny parabol: Ogólna postać równania: y = ax 2 + b
143 Implementacja Style programowania Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a, float b) { return a x x+b; }
144 Implementacja Style programowania Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a, float b) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,1,0); }
145 Definiowanie wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a, float b = 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,1,0); }
146 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a, float b = 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,1); }
147 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a, float b= 0) { return a x x+b; } int main() { float y, x=5; } y = Parabola(x,1); // Parabola(x,1,0)
148 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,1); }
149 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x); }
150 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; } y = Parabola(x); // Parabola(x,1,0)
151 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x); } Co zrobić jeśli chcemy aby a = 2?
152 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,2); }
153 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; } y = Parabola(x,2); // Parabola(x,2,0)
154 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,2); } A jeśli ma być b = 5?
155 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,2,5); }
156 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,2,5); } A jeśli chcemy aby a = 1 i b = 5?
157 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,5); } A jeśli chcemy aby a = 1 i b = 5? Czy można tak?
158 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,,5); } A jeśli chcemy aby a = 1 i b = 5? A może tak?
159 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych float Parabola(float x, float a = 1, float b= 0) { return a x x+b; } int main() { float y, x=5; y = Parabola(x,1,5); } Jeśli chcemy zmodyfikować wartość jednego z parametrów domyślnych, to musimy podać wartości wszystkich parametrów, aż do miejsca, na którym występuje zmodyfikowana wartość.
160 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych void WyswietlOdleglosc( float xn, float yn, float xo=0, float yo=0, const char Jedn= cm )
161 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych void WyswietlOdleglosc( float xn, float yn, float xo=0, float yo=0, const char Jedn= cm )
162 Korzystanie z wartości domyślnych Wartości domyślne Konwencja nazw plików nagłówkowych void WyswietlOdleglosc( float xn, float yn, float xo=0, float yo=0, const char Jedn= cm ) { cout << sqrt(pow(xn-xo,2)+pow(yn-yo,2)) << Jedn << endl; }
Style 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ółowoGeneza powstania języka C++
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ółowoGeneza powstania języka C++
Geneza powstania języka C++ 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
Bardziej szczegółowoStyle programowania - krótki przeglad
Style programowania - krótki przeglad 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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ół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ółowoZaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce
Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Bardziej szczegółowoSzablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
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ół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ół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ółowoProgramowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
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ółowoProgramowanie obiektowe - 1.
Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która
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ół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ół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ół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ół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ół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ółowoInformacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;
Klasy w C++ są bardzo ważnym narzędziem w rękach programisty. Klasy są fundamentem programowania obiektowego. Z pomocą klas będziesz mógł tworzyć lepszy kod, a co najważniejsze będzie on bardzo dobrze
Bardziej szczegółowoWykład 8: klasy cz. 4
Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD
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ółowo1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?
1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 4
PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej
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ół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ół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ółowoJęzyk programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/
Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.
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ółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoTechniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
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ółowoObszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),
Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których
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ółowoJęzyki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003
Bardziej szczegółowoJęzyk C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
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ółowoTechnologie obiektowe
WYKŁAD dr inż. Paweł Jarosz Instytut Informatyki Politechnika Krakowska mail: pjarosz@pk.edu.pl LABORATORIUM dr inż. Paweł Jarosz (3 grupy) mgr inż. Piotr Szuster (3 grupy) warunki zaliczenia Obecność
Bardziej szczegółowoW2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Bardziej szczegółowoPolitechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Przedmioty kierunkowe
Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje w roku akademickim 01/013 Kierunek studiów: Informatyka Forma studiów: Stacjonarne Profil:
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ółowoJava - tablice, konstruktory, dziedziczenie i hermetyzacja
Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja
Bardziej szczegółowoKurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016
Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal
Bardziej szczegółowoWartości domyślne, szablony funkcji i 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 2012 Bogdan Kreczmer Niniejszy dokument
Bardziej szczegółowoLaboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
Bardziej szczegółowoKlasa, metody, rozwijanie w linii
Klasa, metody, rozwijanie w linii 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ół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ółowoHistoria modeli programowania
Języki Programowania na Platformie.NET http://kaims.eti.pg.edu.pl/ goluch/ goluch@eti.pg.edu.pl Maszyny z wbudowanym oprogramowaniem Maszyny z wbudowanym oprogramowaniem automatyczne rozwiązywanie problemu
Bardziej szczegółowoPolitechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013
Politechnika Krakowska im. Tadeusza Kościuszki Karta przedmiotu obowiązuje studentów rozpoczynających studia w roku akademickim 01/013 Wydział Fizyki, Matematyki i Informatyki Kierunek studiów: Informatyka
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ółowoDziedziczenie jednobazowe, poliformizm
Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie jednobazowe 2. Polimorfizm część pierwsza 3. Polimorfizm część druga Zofia Kruczkiewicz, ETE8305_6 1 Dziedziczenie jednobazowe, poliformizm 1. Dziedziczenie
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ółowoC++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie. C++ - dziedziczenie C++ - DZIEDZICZENIE.
C++ - DZIEDZICZENIE Do najważniejszych cech języka C++ należy możliwość wielokrotnego wykorzystywania kodu Prymitywnym, ale skutecznym sposobem jest kompozycja: deklarowanie obiektów wewnątrz innych klas,
Bardziej szczegółowoKlasa, metody, rozwijanie w linii
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ółowoPodstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Bardziej szczegółowoMateriały do zajęć VII
Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja
Bardziej szczegółowoJeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
Bardziej szczegółowoKlasa jest nowym typem danych zdefiniowanym przez użytkownika. Najprostsza klasa jest po prostu strukturą, np
Klasy Klasa jest nowym typem danych zdefiniowanym przez użytkownika Wartości takiego typu nazywamy obiektami Najprostsza klasa jest po prostu strukturą, np struct Zespolona { Klasy jako struktury z operacjami
Bardziej szczegółowoAutomatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);
Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod
Bardziej szczegółowoZaawansowane programowanie w języku C++ Klasy w C++
Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń
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 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
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ół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ół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ół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ółowoModelowanie i Programowanie Obiektowe
Modelowanie i Programowanie Obiektowe Wykład I: Wstęp 20 październik 2012 Programowanie obiektowe Metodyka wytwarzania oprogramowania Metodyka Metodyka ustandaryzowane dla wybranego obszaru podejście do
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ółowoBogdan Kreczmer. Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska
Podejście obiektowe, przeciążenia operatorów, referencje Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska
Bardziej szczegółowoInstrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji
Politechnika Białostocka Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej Instrukcja do pracowni specjalistycznej z przedmiotu Obiektowe programowanie aplikacji Kod przedmiotu: TS1C410201
Bardziej szczegółowoWykład 9: Polimorfizm i klasy wirtualne
Programowanie obiektowe Wykład 9: i klasy wirtualne 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD Programowanie obiektowe i metody wirtualne 2 W programowaniu obiektowym polimorfizm
Bardziej szczegółowoKomputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy
Programowanie w C++ 1.Czym jest programowanie Pisanie programów to wcale nie czarna magia, tylko bardzo logiczna rozmowa z komputerem. Oczywiście w jednym ze specjalnie stworzonych do tego celu języków.
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ółowoWykład 4: Klasy i Metody
Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to
Bardziej szczegółowoWstęp do programowania obiektowego. Wykład 2
Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe
Bardziej szczegółowoPARADYGMATY PROGRAMOWANIA Wykład 2
PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych
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ółowoJAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.
JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod
Bardziej szczegółowoJęzyk C++ Programowanie obiektowe
Język C++ Programowanie obiektowe Cechy programowania obiektowego abstrakcyjne typy danych hermetyczność obiektów (kapsułkowanie) dziedziczenie polimorfizm Programowanie proceduralne vs. programowanie
Bardziej szczegółowo2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Bardziej szczegółowoProgramowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!
Programowanie I O czym będziemy mówili Podstawy programowania w językach proceduralnym ANSI C obiektowym Java Uwaga! podobieństwa w podstawowej strukturze składniowej (zmienne, operatory, instrukcje sterujące...)
Bardziej szczegółowoProgramowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 O mnie prowadzący wykład: Dariusz Wardowski pokój: A334 dyżur: środa, godz. 10.00 12.00 e-mail: wardd@math.uni.lodz.pl
Bardziej szczegółowoOpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska
OpenGL oświetlenie 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
Bardziej szczegółowoSzablony. Szablony funkcji
Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu
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ółowoC++ Przeładowanie operatorów i wzorce w klasach
C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje
Bardziej szczegółowoKLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
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ółowoDo czego służą klasy?
KLASY Dorota Pylak 2 Do czego służą klasy? W programowaniu obiektowym posługujemy się obiektami. Obiekty charakteryzują się: cechami (inaczej - atrybutami lub stanami) operacjami, które na nich można wykonywać
Bardziej szczegółowoLaboratorium 1 - Programowanie proceduralne i obiektowe
Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?
Bardziej szczegółowo