Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie OOP - programowanie zorientowane obiektowo w VB.NET Janusz Górczyński.

Podobne prezentacje


Prezentacja na temat: "Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie OOP - programowanie zorientowane obiektowo w VB.NET Janusz Górczyński."— Zapis prezentacji:

1 Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie OOP - programowanie zorientowane obiektowo w VB.NET Janusz Górczyński

2 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 2 Agenda Wprowadzenie Przestrzenie nazw, klasy, moduły Typy dostępu Współdzielone funkcje Przeciążenie Dziedziczenie Przesłanianie Polimorfizm Interfejsy Właściwości Konstruktory

3 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 3 Wprowadzenie Metoda programowania za pomocą tworzenia modeli obiektów nazywana jest programowaniem obiektowym. W środowisku.NET Framework wszystkie wykorzystywane w aplikacjach komponenty (okna, przyciski, urządzenia wejścia-wyjścia) oraz dane (pliki, bazy danych, ustawienia konfiguracyjne) przedstawiane są jako obiekty. VB.NET obsługuje cztery podstawowe mechanizmy programowania obiektowego: Abstrakcję – czyli możliwość tworzenia kodu w postaci czarnej skrzynki, czyli tworzenia abstrakcyjnej reprezentacji danej koncepcji w programie. Np. klasa CStudent jest abstrakcyjną reprezentacją rzeczywistego studenta.

4 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 4 Wprowadzenie (2) Hermetyzację – jest to koncepcja oddzielenia interfejsu od implementacji. Interfejs to zestaw publicznych metod utworzonych w klasie, poprzez ten zestaw korzystamy z obiektów. Jeżeli interfejs pozostanie spójny (te samy nazwy metod i ich argumenty), to sposób korzystania z obiektów nie ulegnie zmianie niezależnie od sposobu wyrażenia w kodzie metod (czyli od implementacji). Hermetyzacja pozwala na ukrycie szczegółów wewnątrz klasy. Polimorfizmu – związanego z tworzeniem funkcji, która operuje na obiektach więcej niż jednej klasy. Przykładowo klasy CStudnet i CWykladowca mogą mieć właściwość ImieNazwisko, można napisać funkcję, która wywołuje tę właściwość z jednej lub drugiej klasy. Dziedziczenie – czyli możliwość przejęcia przez daną klasę interfejsu i operacji z istniejącej klasy.

5 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 5 Przestrzenie nazw, klasy, moduły W VB.NET klasy i inne struktury danych o podobnym przeznaczeniu zgrupowane są w postaci tzw. przestrzeni nazw. Najprostszym sposobem wykorzystania danej klasy jest zaimportowanie jej przestrzeni nazw. Słowo kluczowe Imports jest używane do zaimportowania danej przestrzeni nazw do naszego projektu. Środowisko.NET Framework dostarcza wielu bardzo przydatnych klas zgromadzonych w różnych przestrzeniach nazw. Jedną z nich jest System Imports System – to instrukcja pozwalająca na korzystanie z klas zebranych w tej przestrzeni

6 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 6 Przykładowa klasa CStudent

7 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 7 Typy dostępu Obiekty w klasach mogą mieć jeden z czterech typów dostępu: Public, Private, Protected i Friend Obiekty poprzedzone słowem Public są dostępne w instancji klasy Obiekty poprzedzone słowem Private mogą być dostępne tylko wewnątrz danej klasy Słowo kluczowe Protected ma podobne znaczenie jak Private, ale jest używane w klasach bazowych po to, aby ich obiekty były dostępne dla klas potomnych Słowo kluczowe Friend udostępnia obiekty tylko wewnątrz danego projektu.

8 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 8 Współdzielone funkcje Obiekty klas, zarówno funkcje jak i zmienne zadeklarowane z użyciem słowa kluczowego Shared stają się dostępne bez konieczności tworzenia instancji danej klasy. Przykładowo deklaracja Public Shared Function fDataKrotka() w klasie CStudent spowoduje, że możemy się odwołać do tej funkcji poprzez podanie jej nazwy kwalifikowanej (pełnej nazwy z podaniem przestrzeni nazw i klasy, w której jest utworzona) Przykład wywołania takiej funkcji: Console.WriteLine(WSZiM.CStudent.fDataKrotka(Now()))

9 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 9 Przykład funkcji współdzielonej, definicja

10 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 10 Przykład funkcji współdzielonej, wywołanie

11 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 11 Przeciążenie (ang. Overloading) Jest to technika pozwalająca na przekazanie do funkcji czy procedury klasy parametrów różnych typów. Przykładowo, chcemy utworzyć funkcję sumującą dwa argumenty, mogą to być np. liczby całkowite, liczby pojedynczej precyzji czy też teksty. Rozwiązaniem jest utworzenie trzech funkcji o tej samej nazwie, ale różnych typach argumentów. Warunkiem koniecznym przeciążenia metody klasy jest poprzedzenie jej definicji słowem kluczowym Overloads. Przykład definicji pokazany jest na kolejnym slajdzie

12 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 12 Definicja metody z użyciem Overloads

13 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 13 Przykład wykorzystania przeciążenia

14 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 14 Dziedziczenie (ang. Inherits) Jest to właściwość pozwalająca na tworzenie klas potomnych dziedziczących metody (interfejs) klasy bazowej. Do poinformowania systemu, że tworzymy klasę potomną służy słowo kluczowe Inherits. Informacja o dziedziczeniu jest zawsze pierwszą instrukcją w module klasy potomnej. Public Class CDane Inherits CForStorageSub dalsze instrukcje klasy potomnej End Class Metody klasy bazowej są dostępne w klasie potomnej po użyciu słowa kluczowego MyBase

15 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 15 Dziedziczenie (Inherits) (2) Metody klasy bazowej mogą być poprzedzone kwalifikatorem dostępu Protected, wtedy są dostępne jedynie dla klas potomnych Definicja klasy może być poprzedzona słowem kluczowym MustInherit, jeżeli tak będzie, do taka klasa nie może być wykorzystana do utworzenia instancji klasy. Jej przeznaczeniem jest funkcjonowanie wyłącznie jako klasa bazowa dla innych klas. Słowo kluczowe NotInherit oznacza z kolei, że dana klasa nie może być klasą bazową dla innych klas. W VB.NET klasa potomna może dziedziczyć jedynie po jednej klasie bazowej

16 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 16 Dziedziczenie – przykład klasy bazowej

17 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 17 Dziedziczenie, przykład klasy potomnej

18 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 18 Dziedziczenie, słowo kluczowe MyBase

19 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 19 Nadpisanie (ang. Overriding) Z założenia klasa potomna dziedziczy metody i właściwości klasy bazowej. Jeżeli z jakiś powodów odziedziczona właściwość czy metoda ma się zachowywać inaczej w klasie potomnej, to musi być nadpisana. Robimy to tworząc w klasie potomnej nową implementację tej metody czy właściwości. Będzie to możliwe tylko wtedy, gdy w klasie bazowej taka metoda (właściwość) będzie poprzedzona słowem kluczowym Overridable. Jej implementacja w klasie potomnej musi być oznaczona słowem Overrides.

20 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 20 Przykład nadpisania

21 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 21 Polimorfizm Zdolność do zmiany implementacji metody czy właściwości. Dzięki temu ta sama metoda czy właściwość (dokładniej o tej samej nazwie) może realizować inną akcję zależnie od typu instancji wywołującej tą metodę czy właściwość.

22 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 22 Polimorfizm oparty o dziedziczenie (1)

23 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 23 Polimorfizm oparty o dziedziczenie (2)

24 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 24 Polimorfizm oparty o dziedziczenie (3) W pokazanym przykładzie procedura ShowTax akceptuje parametr Item typu BaseTax, ale akceptuje także klasy dziedziczące po klasie BaseTax. Jest to zaleta tego rozwiązania, oznacza bowiem, że możemy tworzyć nowe klasy potomne po klasie bazowej BaseTax i dalej korzystać z procedury ShowTax bez konieczności modyfikacji jej kodu.

25 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 25 Polimorfizm oparty o interfejs (1) Interfejsy zabezpieczają inną możliwość wykorzystania polimorfizmu w VB.NET Interfejsy opisują metody i właściwości tak jak klasy, ale bez klas. Interfejsy nie zawierają implementacji. Dla wykorzystania mechanizmu polimorfizmu musimy inaczej zaimplementować interfejs w różnych klasach. Aplikacja klienta korzysta z tych implementacji w analogiczny sposób. Prześledzimy ten problem na przykładzie obliczania pól trójkątów i prostokątów.

26 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 26 Polimorfizm oparty o interfejs (2) W module aplikacji (poza klasą) tworzymy kod definiujący interfejs. Utworzymy teraz moduł klasy zawierający definicje dwóch klas, jedna będzie reprezentować abstrakcyjny trójkąt, druga prostokąt, każda z nich będzie zawierała implementację interfejsu IPowierzchnia.

27 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 27 Polimorfizm oparty o interfejs (3)

28 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 28 Polimorfizm oparty o interfejs (4)

29 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 29 Polimorfizm oparty o interfejs (5) Wywołanie procedury TestInterface daje kolejno takie efekty:

30 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 30 Interfejsy Interfejsy, podobnie jak klasy, definiują zestaw właściwości, metod i zdarzeń, ale w odróżnieniu od klas, nie zawierają implementacji. Interfejsy są implementowane w klasach jako wydzielone fragmenty kodu. Definicja interfejsu zawarta jest między słowami kluczowymi Interface i End Interface Pozostała część kodu może być zadeklarowana jako Event, Sub, Function czy Property

31 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 31 Interfejsy – definicja i implementacja Przykłady definicji interfejsu Interface ISample Event PotwierdzenieZmiany(ByVal sukces As Boolean) Property Podzial() As String Function GetID() As Integer End Interface Class CSample Implements ISample Public Event PotwierdzenieZmiany(ByVal sukces As Boolean) _ Implements ISample.PotwierdzenieZmiany Private mPodzial As String Public Property Division() As String Implements ISample.Podzial Get Return mPodzial End Get Set(ByVal value As String) mPodzial = value RaiseEvent PotwierdzenieZmiany(True) End Set End Property

32 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 32 Interfejsy – definicja i implementacja (2) Private mID As Integer Public Function GetID() As Integer _ Implements ISample.GetID Return mID End Function Public Sub New(ByVal podzial As String, _ ByVal ID As Integer) mPodzial = podzial mID= ID End Sub End Class

33 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 33 Właściwości Zapewniają one wygodny mechanizm odczytu, zapisu i obliczania wartości zmiennych prywatnych klasy. Class WskaznikPostepu Private mPostep As Integer Public Property Postep() As Integer Get Postep = mPostep End Get Set(ByVal value As Integer) If value 100 Then mPostep = 100 Else mPostep = value End if End Set End Property End Class

34 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 34 Właściwości (2) Do właściwości odwołujemy się tak, jakby była zmienną składową, jednak w momencie przypisania wykonywany jest kod z odpowiedniego bloku (Get lub Set). Dim wsk As WskaznikPostepu = _ New WskaznikPostepu wsk.Postep = -10 System.Console.Write("Postęp: {0}", wsk.Postep) W tym wypadku w konsoli pojawi się komunikat: Postęp: 0 W momencie przypisania do właściwości Postep wartości - 10, wywołany zostaje blok Set tej właściwości, który koryguje nieprawidłową wartość. W prywatnej zmiennej składowej zapisywana jest liczba 0. W następnej linii, podczas pobierania wartości właściwości, kod bloku Get zwraca wartość zapisaną w składowej prywatnej

35 Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego 35 Konstruktor Każda klasa posiada specjalną funkcję składową, zwaną konstruktorem. Funkcja ta wywoływana jest podczas tworzenia nowego egzemplarza klasy. W momencie inicjowania obiektu klasy za pomocą słowa kluczowego New wywoływany jest odpowiedni stworzony przez nas konstruktor, a jeśli go nie ma, to automatycznie utworzony konstruktor domyślny. Konstruktor służy do ustawienia początkowych wartości zmiennych prywatnych (składowych) obiektu Public Class CSamochod Private mKolor As String Public Sub New(ByVal KolorFabryczny As String) mKolor = KolorFabryczny End Sub End Class


Pobierz ppt "Wyższa Szkoła Zarządzania i Marketingu w Sochaczewie OOP - programowanie zorientowane obiektowo w VB.NET Janusz Górczyński."

Podobne prezentacje


Reklamy Google