Instytut Informatyki, Politechnika Poznańska, SUM-TWO. Zaawansowane programowanie obiektowe

Podobne dokumenty
Microsoft IT Academy kurs programowania

Programowanie w środowiskach graficznych. Wykład 3 Język C#

Podstawy programowania. Wprowadzenie

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Języki i paradygmaty programowania doc. dr inż. Tadeusz Jeleniewski

KOTLIN. Język programowania dla Androida

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Metodyka programowania. Podstawy C#

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Programowanie C# mgr in. Dariusz Ku. p. 119A

Środowiska i platformy programistyczne

MATERIAŁY DO ZAJĘĆ II

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Programowanie obiektowe

Wykład 5 Okna MDI i SDI, dziedziczenie

Języki i paradygmaty programowania - 1

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Multimedia JAVA. Historia

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Java Język programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie współbieżne i rozproszone

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

PARADYGMATY PROGRAMOWANIA Wykład 4

Programowanie MorphX Ax

Programowanie RAD Delphi

SWIFT. Zaawansowane Programowanie Obiektowe

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie obiektowe

C# /.NET. Copyright by 3bird Projects 2018,

Programowanie obiektowe - 1.

Programowanie Komputerów

Podstawy otwartych języków programowania Przechowywanie danych

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Podstawy Programowania Obiektowego

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Programowanie obiektowe

Szablony funkcji i szablony klas

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Język ludzki kod maszynowy

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Wprowadzenie do języka Java

Język programowania Scala / Grzegorz Balcerek. Wyd. 2. Poznań, cop Spis treści

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Tworzenie aplikacji w języku Java

C# - innowacja czy plagiat?

Materiały do zajęć VII

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Programowanie obiektowe i zdarzeniowe

Wykład 8: klasy cz. 4

Język C++ wykład VIII

Instrukcja laboratoryjna cz.3

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Programowanie w Internecie. Java

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Programowanie obiektowe. Wprowadzenie

Autor: Bączkowski Karol Promotor: dr inż. Paweł FIGAT

Programowanie 2. Język C++. Wykład 3.

Języki i paradygmaty programowania

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Spis treści. Wprowadzenie 15

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Wprowadzenie do Objective-C

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

.NET Klasy, obiekty. ciąg dalszy

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Programowanie obiektowe W1 Wprowadzenie. Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki

Wprowadzenie do programowania

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Wykłady 1, 2. Wstęp do programowania w środowisku Visual C++ Autor: Zofia Kruczkiewicz

Metodyka programowania. Podstawy C#

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Wykład 9: Polimorfizm i klasy wirtualne

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Klasy cd. Struktury Interfejsy Wyjątki

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Techniki Programowania

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Język programowania. Andrzej Bobyk

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Programowanie obiektowe

Programuj w języku C# i zarabiaj na swoich aplikacjach! Programowanie w Visual Studio 2013 to czysta przyjemność!

Programowanie obiektowe

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język C++ Różnice między C a C++

Programowanie obiektowe zastosowanie języka Java SE

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Transkrypt:

Instytut Informatyki, Politechnika Poznańska, SUM-TWO Zaawansowane programowanie obiektowe 9 października 2016

dr inż. Bartłomiej Prędki pok. 124 Centrum Wykładowe tel. 61-665-2932 Bartlomiej.Predki@cs.put.poznan.pl http://zajecia.predki.com

Literatura 1. Język C# 2008 i platforma.net 3.5, A. Troelsen, PWN, Warszawa. 2009 2. Visual C#.NET. Encyklopedia, Microsoft, Helion, Warszawa, 2003 3. Visual Studio. NET, Robert B. Dunaway, Mikom, Warszawa, 2003 4. C# i.net, Stephen C. Perry, Helion, Warszawa, 2006 5. Inżynieria oprogramowania, A. Jaszkiewicz, Helion, Warszawa 6.

Historia programowania Język maszynowy Taśmy/karty dziurkowane W celu zwiększenia czytelności kody funkcji zastąpiono nazwami (mnemonikami) assembler Języki nastawione na obliczenia, np. Fortran Inne języki specjalizowane

Obliczanie ciągu Fibbonaciego w asemblerze x86 stosik segment stack rozmiar equ 100 dw rozmiar dup(?) stosik ends fibmul segment assume cs:fibmul,ds:fibmul,ss:stosik fib proc mov dx,bx push ax push bx push cx push di mov ax,1 mov bx,1 mov di,0 @while: cmp di,dx jge @endwhile mov cx,ax add cx,bx mov ax,bx mov bx,cx inc di jmp @while @endwhile: mov dx,bx pop di pop cx pop bx pop ax ret fib endp @start: mov ax,1 mov bx,1 @whille: cmp bx,cx jge @end call fib mul dx inc bx jmp @whille @end: int 3 fibmul ends end @start

Języki proceduralne Typy podstawowe (int, double, char) Tablice Typy wyliczeniowe Struktury (rekordy) Procedury Funkcje Przykłady Pascal, C

Inne języki Sztuczna inteligencja rachunek predykatów Prolog Przetwarzanie list LISP Język dla dzieci LOGO

Języki obiektowe Nowe podejście do programowania Bardzo ważne pojęcie klasy Pierwszy język obiektowy Smalltalk Rozszerzenie języków proceduralnych C++, Object Pascal, Objective-C Języki w pełni obiektowe Java, języki.net

Języki obiektowe Klasa składa się z: Zmiennych innych typów (Atrybuty, Pola) Funkcji działających na tych zmiennych (Operacje, Metody) Własności dostęp do pól za pomocą specjalizowanych metod. Obiekt instancja klasy.

Platforma.Net

Platforma.Net W 2001 roku Microsoft zaprezentował platformę.net Odpowiedź Microsoft u na sukces Javy Wady i zalety w stosunku do Javy

Cechy platformy.net przeznaczone do tworzenia i dystrybucji nowoczesnego, zorientowanego obiektowo oprogramowania, aplikacja.net może być napisana w jednym z wielu języków przeznaczonych dla platformy, udostępnia bibliotekę niezależnych językowo klas, umożliwia tworzenie samoopisujących się komponentów umożliwia integrację wielu języków programowania nowy model tworzenia aplikacji dla środowiska Windows nowy model tworzenia aplikacji webowych tworzenie aplikacji mobilnych nowa architektura dostępu do baz danych

Cechy platformy.net umożliwia tworzenia wieloplatformowych usług webowych udostępnia nową architekturę do tworzenia zdalnych obiektów wiele technik programowania dla Windows czyni przestarzałymi koniec piekła-dll

Języki.Net Języki wspierane przez Microsoft: C# (C sharp) Visual Basic.Net C++ J# (J sharp) Inne języki: COBOL EIFFEL PERL Python Smalltalk

Architektura.Net C# VB.Net MC++ Inne Wspólna specyfikacja języka CLS (CLI) Web Services Web Forms Windows Forms Windows Presentation Foundation Dostęp do danych i obsługa XML Bazowa biblioteka klas BCL Środowisko uruchomieniowe CLR

Język pośredni Kod źródłowy jest tłumaczony przez kompilator języka na kod pośredni IL (Intermediate Language). Kod IL jest wykonywany przez środowisko uruchomieniowe CLR (Common Language Runtime). Języki można mieszać dzięki wspólnemu systemowi typów CTS (Common Type System). Kod IL jest zawsze kompilowany, czyli nie korzysta z maszyny wirtualnej.

Kod C# Kod VB.Net Kod inny Kompilator C# Kompilator VB.Net Kompilator innego języka IL + metadata IL + metadata IL + metadata Kompilator JIT CLR Kod binarny

CLR kod jest kodem zarządzanym (managed code) istnieje możliwość współpracy z kodem tradycyjnym, np. z komponentami typu COM metadane zawierają automatycznie generowany opis komponentu, jego typów i interfejsu

CLR CLR zarządza aplikacjami ładuje i weryfikuje kod wykonuje garbage collection, separuje aplikacje zarządza bezpieczeństwem udostępnia możliwość debugowania i profilowania

CLR IL + metadane CLR Class loader JIT Weryfikacja Econo-JIT, Opti-JIT Zarządzany kod binarny, Garbage collection, bezpieczeństwo, wyjątki, wątki,...

Kompilator JIT Kompiluje kod IL do kodu maszynowego Pre-JIT kompiluje cały kod z góry, można używać w trakcie instalacji, Normal-JIT normalny kompilator, przechowuje skompilowany kod w cache u Econo-JIT kompilator optymalizujący kod dla limitowanych zasobów

Garbage collection uruchamia się, gdy zaczyna brakować pamięci, zakłada, że wszystko można usunąć, po czym dokonuje weryfikacji, elementy używane przesuwa na początek obszaru i uaktualnia wskaźnik wolnej pamięci, nie przenosi elementów o rozmiarze większym niż 20 kb, można uruchomić ten proces ręcznie.

Cykl kodu Kod źródłowy aplikacji Kompilator generuje kod IL i tworzy pakiet (assembly) Loader wczytuje nagłówek pliku wykonywalnego Ładowane są wymagane biblioteki DLL Wykonywana jest funkcja _CorExeMain z początku aplikacji _CorExeMain uruchamia JIT kompilujący kod IL na maszynowy Kod maszynowy jest wykonywany

Hello world

Hello World IL

Samoopisujący się kod

Samoopisujący się kod Informacje o kodzie zapisane są w manifeście (manifest), który zawiera opis typów, metod oraz np. wersję komponentu.

Narzędzia.Net Platform SDK, Visual Studio.Net (C#,VB,C++,J#) Borland C# Builder Delphi SharpDevelop (C#, VB) www.icscharpcode.net inne

Wieloplatformowość.Net Compact Framework na Pocket PC podzbiór platformy dla urządzeń mobilnych Project Mono dla Linux a CLR, JIT, klasy i kompilator C#. http://www.go-mono.com/ Portable.Net narzędzia i platforma dla wielu systemów http://www.southern-storm.com.au/

C#

C# i.net Framework Język C# jest podstawowym językiem programowania dla platformy.net Nie istnieje kompilator kompilujący kod C# na język maszynowy.

Microsoft C#.net Nowy język bazujący na C++ i Javie W pełni obiektowy nastawiony na programowanie dla platformy.net Podstawowe założenie wszystko jest klasą, nawet typy podstawowe Zarządzanie pamięcią wykonywane przez platformę uruchomieniową (Garbaga Collection)

Typy podstawowe byte sbyte short ushort int uint long ulong float double decimal string char bool

Deklarowanie zmiennych Zmienne są deklarowane jak w C, C++ int i; double liczba; string lancuch = Tekst ; W C# nie ma wskaźników!

Operatory Operatory identyczne jak w C++ podstawienie = porównanie == inkrementacyjne ++ -- += -= *= /= logiczne && znaki specjalne po \

Instrukcje warunkowe Zapis identyczny jak w C++ if (x==5) { } else { } switch (lancuch) { } case a : break; case b : break; default: break;

Pętle Pętle jak w C++ for (int i=0;i<5;i++) { ; } while (i<5) { ; }

Typ wyliczeniowy enum TypWyliczeniowy { wartosc1, wartosc2, wartosc3 } TypWyliczeniowy zmienna=wartosc2;

Obsługa wyjątków try { //kod, w którym może wystąpić błąd } catch (Exception e) { //został zgłoszony wyjątek - e } finally { //kończy obsługę wyjątku }

Zgłaszanie wyjątków if (y==0) throw new Exception( Nie możesz dzielić przez 0 ); return x/y;

Przestrzenie nazw Aby unikać konfliktów nazw stosuje się przestrzenie nazw (namespace). namespace program { ; }

Klasy W przeciwieństwie do C++ nie ma osobnej deklaracji i definicji elementów klasy. public class Complex { int re; int im; Complex() { re=0; im=0; } }

Rodzaje dostępu Identyfikator dostępu umieszcza się przed każdym elementem. private public protected internal wewnątrz pakietu (assembly) protected internal wewnątrz pakietu i dziedziczone

Dostęp do pól przez własności Ze względu na ochronę pól, zamiast metod typu Get/ Set stosuje się własności (Properties).

Konstruktory Klasa może mieć wiele konstruktorów, pod warunkiem, że różnią się argumentami Konstruktor ma nazwę taką jak klasa i nie ma typu. Konstruktor powinien być publiczny. Praktycznie nie używa się destruktorów.

Metody Może być wiele metod o tej samej nazwie, z zastrzeżeniem jak przy konstruktorach. Metody mogą mieć typ lub mogą być typu void. Można wymusić przekazywanie argumentów przez referencję korzystając ze słowa kluczowego ref.

Dziedziczenie Podstawową relację między klasami jest dziedziczenie. W C# nie ma wielokrotnego dziedziczenia jak w C++. public class Dziecko:Rodzic { ; }

Dziedziczenie Wielokrotne dziedziczenie można zastąpić przy pomocy interfejsów. Interfejs może definiować metody i właściwości

Polimorfizm Wszystkie klasy w C# dziedziczą po klasie object. Pod zmienną typu object można podstawić dowolny obiekt. Klasa object ma kilka metod, np. ToString. int i=5; object o=i; int j=(int)o;

Klasy abstrakcyjne Klasa jest abstrakcyjne, gdy jeden z jej elementów jest abstrakcyjny. Słowo kluczowe abstract.

Przeciążanie metod Aby można tworzyć obiekty klasy dziedziczącej po klasie abstrakcyjnej należy przeciążyć jej metody abstrakcyjne. Można przeciążać inne metody Słowo kluczowe override i sealed.

Przeciążanie metod

Metody wirtualne Przy stosowaniu klasycznych metod kompilator może w momencie kompilacji określić kiedy będzie wywołana jaka metoda Metoda wirtualna to metoda z późnym wiązaniem, na etapie wykonywania kodu.

Metody wirtualne A.F B.F B.G B.G

Metody klasy object Equals() porównuje dwa obiekty, ReferenceEquals() porównuje referencje do obiektów, GetHashCode() określa unikalny kod obiektu, GetType() określa typ obiektu, ToString() konwertuje obiekt na łańcuch znaków

Tablice i kolekcje Tablice są typami złożonymi. Kolekcje (ArrayList) rodzaj listy. Można się po nich poruszać korzystając z instrukcji foreach.

Tablice i kolekcje

Typy generyczne Podobne do szablonów w C++.Net 1.1.Net 2.0

Typy generyczne Można definiować kilka typów, np.: Metody typu generic

Typy generyczne Wbudowane w BCL, takie jak: List<> Dictionary<> Stack<>...

Iteratory Ułatwiają tworzenie własnych typów, które mogą być wywoływane za pomocą instrukcji foreach

Iteratory Klasa może mieć wiele iteratorów

Typy częściowe Umożliwiają zapis kodu klasy w oddzielnych częściach, np. plikach. Wszystkie części muszą być obecne w momencie kompilacji.

Typy null owe Umożliwiają podstawianie wartości null do zmiennych typów podstawowych, np. int. Kwestie konwersji typów.

.Net Framework 3.0 CLR zgodny z 2.0 Nowe elementy: Windows Presentation Foundation, Windows Communication Foundation, Windows Workflow Foundation, Windows CardSpace.

.Net Framework 3.5 Nowe elementy językowe: typy implicite - określane przez wartość

.Net Framework 3.5 Metody rozszerzające (Extension methods)

.Net Framework 3.5 Metody lambda - rozszerzenie metod anonimowych operator lambda => (goes to)

.Net Framework 4.0 Typy dynamiczne - wiązanie w czasie uruchomienia Argumenty opcjonalne Argumenty z nazwą Lepszy mechanizm InterOp

Przeciążanie konstruktorów Konstruktory muszą się różnić argumentami!

Przeciążanie operatorów

Operatory konwersji implicit konwersja domyślna explicit - wymuszona

Operatory is i as is sprawdza czy dany obiekt można bezpiecznie rzutować na określony interfejs as dokonuje od razu rzutowania na interfejs

Interfejsy Interfejsy mogą mieć nie tylko metody ale i własności W ramach platformy.net jest zdefiniowanych kilka interfejsów, np. IComparable ma metodę CompareTo i pozwala na sortowanie obiektów w kolekcjach

Interfejsy

Interfejs IEquatable<> umożliwia porównywanie obiektów za pomocą standardowych mechanizmów, np. metody Contains, IndexOf kolekcji

Delegacje Zastępują wskaźniki do funkcji w C++, przy czym są bezpieczne (kontrola typów) Określają jakiego typu i z jakimi argumentami będzie wywołana funkcja

Delegacje

Delegacje

Delegacje