Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

C++ Jeden z języków programowania, który powinieneś znać

Podobne prezentacje


Prezentacja na temat: "C++ Jeden z języków programowania, który powinieneś znać"— Zapis prezentacji:

1 C++ Jeden z języków programowania, który powinieneś znać

2 Jestem Piotr Kłos Kilka podstawowych książek, wątki na forach, dokumentacje, kod źródłowy w C++ Wzorce Projektowe według Bandy czworga Nowoczesne projektowanie w C++ Andrei Alexandrescu Głupią grę o nazwie Kartofel Obiektowo orientowany graficzny interfejs użytkownika PKgui Edytor Labiryntów, część Generatora Labiryntów Czytam i polecam:Napisałem:

3 Ta prezentacja jest o… Teorii C++ Zalety i wady C++ Znaczenie C++ w nowoczesnym programowaniu

4 Czym jest C++? kompilowany język programowania ogólnego przeznaczenia Język obiektowo orientowany Osadzony na C => wspiera programowanie proceduralne Wysoko rozwinięty, ustandaryzowany język; jego jakość stale się zwiększa bezpieczny <= bezwzględna statyczna kontrola typów Umożliwia programowanie generyczne<= szablony

5 Historia C++ Bjarne Stroustrup Pierwsza, nędzna wersja z 1979 C z klasami C++ jako standard ISO z1998 Rosnąca popularność ostatni standard w 2003 r. Jest tworzona nowa wersja, C++ 0x

6 Obiektowo orientowany? klasy dziedziczenie polimorfizm główne cechy paradygmatu orientowania obiektowego: Oparty na obiektach (ang. Object-based) język (jak Visual Basic czy JavaScript) nie ma co najmniej jednego z nich.

7 Obiektowo orientowany? klasy – zdefiniowane przez użytkownika, pełnoprawne typy Poprawny przykład (słowa kluczowe na czerwono): class ClassName { private: OtherClassName b; public: int a; ClassName* c; void f() { cout<

8 Obiektowo orientowany? dane class ClassName { private: OtherClassName b;/// public: int a;/// ClassName* c;/// void f() { cout<

9 Obiektowo orientowany? Dane typów wbudowanych class ClassName { private: OtherClassName b; public: int a; /// ClassName* c; void f() { cout<

10 Obiektowo orientowany? Dane typów zdefiniowanych przez użytkownika class ClassName { private: OtherClassName b; /// public: int a; ClassName* c; void f() { cout<

11 Obiektowo orientowany? Wskaźniki, referencje, tablice, wskaźniki do wskaźników, referencje do tablic wskaźników itd. class ClassName { private: OtherClassName b; public: int a; ClassName* c; /// void f() { cout<

12 Obiektowo orientowany? Zachowania obiektów: funkcje składowe, które łatwo przetwarzają dane obiektu lub robią czego tylko potrzeba class ClassName { private: OtherClassName b; public: int a; ClassName* c; void f() { /// cout<

13 Obiektowo orientowany? Najzwyklejsza funkcja (drukowanie wartości a) class ClassName { private: OtherClassName b; public: int a; ClassName* c; void f() { /// cout<

14 Obiektowo orientowany? Konstruktory i konstruktory kopiujące class ClassName { private: OtherClassName b; public: int a; ClassName* c; void f() { cout<

15 Obiektowo orientowany? Destruktor class ClassName { private: OtherClassName b; public: int a; ClassName* c; void f() { cout<

16 Obiektowo orientowany? Przeładowywane operatory ClassName x(3),y(4); x=x+y; /*x.a==7*/ class ClassName { private: OtherClassName b; public: int a; ClassName* c; void f() { cout<

17 Obiektowo orientowany? Ukrywanie składników Unikanie błędów i niepotrzebnych zależności plików class ClassName { private: /// OtherClassName b; public: /// int a; ClassName* c; void f() { cout<

18 Obiektowo orientowany? Selektywne ukrywanie składników class ClassName { private: /// OtherClassName b; public: /// int a; ClassName* c; void f() { cout<

19 Obiektowo orientowany? dziedziczenie NextClassName zawiera składniki ClassName class NextClassName :public ClassName /// { int d; float z; };

20 Obiektowo orientowany? Obsługa sytuacji wyjątkowych Stałość obiektów Inlining Łatwa w użyciu oraz dynamiczna alokacja pamięci Przestrzenie nazw Przeładowanie operatorów hermetyzacja identyfikowanie typów w czasie wykonania programu Pozostałe OO-przyjazne idiomy w standardzie C++:

21 Obiektowo orientowany? Aby odzwierciedlać realny świat Aby odzwierciedlać wszystkie byty istniejące jedynie w naszej wyobraźni Aby odzwierciedlać wszystkie techniczne byty w architekturze komputera OO, jednorodne, łatwe w użyciu, wbudowane techniki można użyć aby: Paradygmat OO jest bardzo potężny!

22 Przykłady kodu w C++: Dosłownie wszystko w Microsofcie Oprogramowanie Adobe Systems Google – silnik do wyszukiwania Apple OS X Havoc – silnik fizyczny Metrowerks – narzędzia Mozilla Firefox Większość dużych gier

23 Czy C++ jest idealny? Nie obsługuje wielowątkowości Nie posiada delegatów (wskaźników na funkcję składową dowolnej klasy) Nie uwzględnia niektórych wzorców projektowych – (bardziej abstrakcyjne rzeczy, które nie mogą być zdefiniowane jako obiekty) Wielu programistów jest niezadowolonych z C++ ponieważ:

24 Czy C++ jest idelany? Wiele bibliotek do C++ ją posiada C++ 0x naprawi to Jak dotąd brak jednolitej obsługi wielowątkowości Obsługa wielowątkowości:

25 Czy C++ jest idealny? Wiele bibliotek C++ je implementuje C++ 0x może to poprawić Nie ma ujednoliconych delegatów delegaty:

26 Czy C++ jest idealny? Wzorzec projektowy– nazwane i formalnie opisane rozwiązanie skomplikowanego problemu. Wsparcie dla wzorców projektowych: Co to są wzorce projektowe?

27 Czy C++ jest idealny? Da się zaimplementować niektóre używając obiektów Są także biblioteki w C++ implementujące część z nich Te rozwiązania nadają się do ogólnego użytku Ale niezbyt eleganckie i łatwe w użyciu To się nie zmieni Wsparcie dla wzorców projektowych:

28 Czy C++ jest idealny? Problem z zależnościami pomiędzy zachowaniami obiektów Nie mogą być zdefiniowane tylko w języku obiektów Różnica pomiędzy zbiorem pojęć w projekcie i strukturami w kodzie Kod nie odzwierciedla kontekstu problemu Paradygmat OO nie odzwierciedla światów !!! Wsparcie dla wzorców projektowych:

29 C++ nie jest idealny. Nie można przetłumaczyć niektórych projektów na język C++ ponieważ C++ jest językiem OO Rozwiązanie tego: języki orientowane aspektowo* *Paradygmat AO– przedstawiony ostatnio przez Gregora Kiczalesa; są już takie języki, np. AspectJ czy AspectC++ którego go używają; zobacz

30 Dlaczego C++ jest tak popularny? Możesz skompilować kod C jako C++ Więc możesz używać starych bibliotek C w C++ C++ obsługuje programowanie liniowe, proceduralne, bazujące na obiektach, orientowane obiektowo i abstrakcje danych. Skompilowany kod C++ jest bardzo szybki. Najprawdopodobniej jest językiem najbardziej ogólnego przeznaczenia na świecie.

31 Ogólnego przeznaczenia… więc istnieje wielka wspólnota więc istnieje wiele bibliotek C++! więc jest konkurencja Więc jakość kodu jest bardzo wysoka Jakość standardu C++ rośnie, by się przystosować do wymagań Inny istotny powód…

32 Programowanie uogólnione w C++ Szablony – sposób programowania abstrakcji Kompilator generuje podobne części kodu zamiast programisty Wielka wspólnota C++ produkuje wiele bibliotek szablonowych Przykłady: STL, Boost, Loki i inne Gotowe rozwiązania skomplikowanych problemów Szybkie, łatwe, bezpieczne i skuteczne programowanie

33 Wnioski C++ jest mocarny! C++ i dalsze wersje będą używane przez długi, długi czas C++ wpłynął na Java, C#, PHP, ADA95 etc. Prawdopodobnie wpłynie na inne języki w przyszłości Warto go znać


Pobierz ppt "C++ Jeden z języków programowania, który powinieneś znać"

Podobne prezentacje


Reklamy Google