Programowanie obiektowe

Podobne dokumenty
Programowanie obiektowe

Programowanie obiektowe

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

Programowanie obiektowe

Wykład 5 Okna MDI i SDI, dziedziczenie

Java: interfejsy i klasy wewnętrzne

Programowanie obiektowe

Kurs WWW. Paweł Rajba.

Programowanie obiektowe

Programowanie obiektowe i zdarzeniowe

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Imi i nazwisko... Egzamin - Programowanie Obiektowe II rok informatyki, studia pierwszego stopnia, niestacjonarne Termin zerowy

Platformy Programistyczne Podstawy języka Java

Programowanie obiektowe

Programowanie Komputerów

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

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

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Lista, Stos, Kolejka, Tablica Asocjacyjna

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

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

Dziedziczenie. dr Jarosław Skaruz

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

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

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany


Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Programowanie w Ruby

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Wykład 4: Klasy i Metody

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Metodyki zwinne wytwarzania oprogramowania

Polimorfizm, metody wirtualne i klasy abstrakcyjne

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie obiektowe

Wykład 2 Składnia języka C# (cz. 1)

Enkapsulacja, dziedziczenie, polimorfizm

Aplikacje w środowisku Java

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Programowanie Komputerów

Diagram klas UML jest statycznym diagramem, przedstawiającym strukturę aplikacji bądź systemu w paradygmacie programowania obiektowego.

Java Język programowania

Programowanie obiektowe

Materiały do zajęć VII

Definiowanie własnych klas

Rozdział 4 KLASY, OBIEKTY, METODY

Czym jest stos i sterta?

Klasy cd. Struktury Interfejsy Wyjątki

PHP 5 język obiektowy

Kurs programowania. Wykład 9. Wojciech Macyna

.NET Klasy, obiekty. ciąg dalszy

Dokumentacja do API Javy.

Metodyki zwinne wytwarzania oprogramowania

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

TEMAT : KLASY POLIMORFIZM

Klasy i obiekty cz II

Projektowanie obiektowe oprogramowania Wykład 4 wzorce projektowe cz.i. wzorce podstawowe i kreacyjne Wiktor Zychla 2017

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Wykład 7: Pakiety i Interfejsy

C-struktury wykład. Dorota Pylak

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wykład 4. Klasa List Kolejki Stosy Słowniki

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Podstawy programowania obiektowego

Programowanie obiektowe

1. Klasa typu sealed. Przykład 1. sealed class Standard{ class NowyStandard:Standard{ // błd!!!

Języki i techniki programowania Ćwiczenia 2

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

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

Zaawansowane programowanie w C++ (PCP)

UML a kod. C++, Java i C#

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Interfejsy i klasy wewnętrzne

Klasy abstrakcyjne i interfejsy

Podstawy programowania. Podstawy C# Tablice

Programowanie obiektowe w VB cz 2

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

Programowanie obiektowe

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

PARADYGMATY PROGRAMOWANIA Wykład 2

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Wykład 8: klasy cz. 4

PARADYGMATY PROGRAMOWANIA Wykład 4

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Microsoft Visual C++.NET Edycja polska: Wydawnictwo RM

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

TEMAT : KLASY DZIEDZICZENIE

Projektowanie aplikacji internetowych laboratorium

Oracle PL/SQL. Paweł Rajba.

Zaawansowane programowanie w C++ (PCP)

Diagramy klas. dr Jarosław Skaruz

C-struktury wykład. Dorota Pylak

Podstawy programowania obiektowego

Transkrypt:

Programowanie obiektowe Wykład 4 Marcin Młotkowski 15 marca 2018

Plan wykładu 1 2 3 Klasa podstawowa Własne kolekcje Obiekty i wartości Marcin Młotkowski Programowanie obiektowe 141 / 224

Z czego składa się obiekt pola; metody; właściwości. Marcin Młotkowski Programowanie obiektowe 142 / 224

Motywacje pola wyliczane (tylko do odczytu): wiek czy godzina; kontrola przypisania: miesiąc Marcin Młotkowski Programowanie obiektowe 143 / 224

Niedogodności stosowania pól jeśli pole jest publiczne wszyscy mogą czytać i modyfikować pola; nie można kontrolować podstawianych wartości; nie można ustalać wartości "w locie" w trakcie odwołania do pola. Marcin Młotkowski Programowanie obiektowe 144 / 224

Częściowe rozwiązanie Akcesory Dla każdej zmiennej Variable tworzymy dwie metody SetVariable(val) GetVariable() Marcin Młotkowski Programowanie obiektowe 145 / 224

(propercje) trochę przypomiają zmienne a trochę metody; "z zewnątrz" przypominają pola; "od wewnątrz" przypominają metody. Marcin Młotkowski Programowanie obiektowe 146 / 224

Przykład implementacji właściwości class Data int mies, dzien; public int Mies get return mies; set if (value < 13 && 0 < value) mies = value; else mies = 1; public int Dzien get return dzien; Marcin Młotkowski Programowanie obiektowe 147 / 224

Zastosowanie Dzien d = new Dzien(); d.mies = 3; Console.WriteLine(d.Dzien); d.dzien = 23; Marcin Młotkowski Programowanie obiektowe 148 / 224

Singleton po raz kolejny sealed class Singleton Singleton() static Singleton instance; public string nazwa; public static Singleton Instance() if (instance == null) instance = new Singleton(); return instance; Marcin Młotkowski Programowanie obiektowe 149 / 224

Inna implementacja singletonu public static Singleton Instance get if (instance == null) instance = new Singleton(); return instance; Marcin Młotkowski Programowanie obiektowe 150 / 224

Plan wykładu 1 2 3 Klasa podstawowa Własne kolekcje Obiekty i wartości Marcin Młotkowski Programowanie obiektowe 151 / 224

Motywacje Co można robić z obiektami zapisywać/odczytywać do/z pliku; porównywać (w kolekcjach uporządkowanych); klonować; i wiele innych rzeczy... Marcin Młotkowski Programowanie obiektowe 152 / 224

Przykład object[] table = new object[2]; table[0] = new Punkt(); table[1] = new Tramwaj(); Marcin Młotkowski Programowanie obiektowe 153 / 224

Przykład object[] table = new object[2]; table[0] = new Punkt(); table[1] = new Tramwaj(); Jak wymusić, aby klasy implementowały metodę Clone()? Jaki ma typ tablica table? Marcin Młotkowski Programowanie obiektowe 153 / 224

Interfejs Interfejs definiuje typ, nie klasę. Interfejs deklaruje pola i metody (bez implementacji) Klasy mogą implementować wiele interfejsów Marcin Młotkowski Programowanie obiektowe 154 / 224

Typ to nie klasa! Marcin Młotkowski Programowanie obiektowe 155 / 224

Implementacja listy, wersja A class ListaA private object[] lista; public void Append(object elem)... Marcin Młotkowski Programowanie obiektowe 156 / 224

Implementacja listy, wersja B class ListaB class Elem public object val; public Elem next; public void Append(object elem)... Marcin Młotkowski Programowanie obiektowe 157 / 224

Wspólny wygląd klas interface Lista public void Append(object); Marcin Młotkowski Programowanie obiektowe 158 / 224

Inny przykład interface ICloneable object Clone(); Marcin Młotkowski Programowanie obiektowe 159 / 224

Implementacja interfejsu class Samochod : Pojazd, System.ICloneable... public object Clone() return this.memberwiseclone();... Marcin Młotkowski Programowanie obiektowe 160 / 224

Implementacja interfejsu class Samochod : Pojazd, System.ICloneable... public object Clone() return this.memberwiseclone();... Marcin Młotkowski Programowanie obiektowe 160 / 224

Przykłady użycia ICloneable[] tablica = new ICloneable[10]; tablica[0] = new Samochod(); Nie można tworzyć obiektów tablica[1] = new ICloneable(); Marcin Młotkowski Programowanie obiektowe 161 / 224

Porównywanie obiektów interface IComparable public int CompareTo(object obj); Marcin Młotkowski Programowanie obiektowe 162 / 224

Kolekcja uporządkowana class OrderedCollection void Add(IComparable elem)... Marcin Młotkowski Programowanie obiektowe 163 / 224

Bazy danych Firebird APLIKACJA MS SQL SQLite Marcin Młotkowski Programowanie obiektowe 164 / 224

Implementacja sterowników Producenci silników baz danych mogą dostarczać własnych sterowników dostępu do baz danych; sterowniki powinne implementować co najmniej pola i metody zdefiniowane w interfejsie System.Data.IDbConnection i pochodnych. Marcin Młotkowski Programowanie obiektowe 165 / 224

Interfejs namespace System.Data; interface IDbConnection void Close(); void Open(); IDbCommand CreateCommand();... Marcin Młotkowski Programowanie obiektowe 166 / 224

Fabryka obiektów enum RDBMS = mysql, sqlite, oracle public IDBConnection SQLDriver(RDBMS typ) IDbConnection conn; switch (typ) case mysql: conn = new MySql.Data.MySqlClient.MySqlConnection(cs); break ; case sqlite: conn = new Mono.Data.SqliteClient.SqliteConnection(cs); break ; case oracle: conn = new System.Data.OracleConnection(cs); break ; return conn; Marcin Młotkowski Programowanie obiektowe 167 / 224

Zastosowanie Fabryki IDbConnection connection = Connection(wybor); connection.open(); IDbCommand cmd = connection.createcommand(); cmd.commandtext = SELECT * FROM Studenci ; IDataReader rd = cmd.executereader(); Marcin Młotkowski Programowanie obiektowe 168 / 224

generyczne interface IComparable<T> int CompareTo(T obj); Marcin Młotkowski Programowanie obiektowe 169 / 224

Przykład class Informacja public System.DateTime create; public String Nazwisko; Marcin Młotkowski Programowanie obiektowe 170 / 224

Przechowywanie class Lista<T> Lista<T> next; protected T val; public void Add(T val) if (this.val < val)... else... Marcin Młotkowski Programowanie obiektowe 171 / 224

Przechowywanie class Lista<T> where T : IComparable<T> Lista<T> next; protected T val; public void Add(T val) if (this.val.compareto(val) > 0)... else... Marcin Młotkowski Programowanie obiektowe 171 / 224

Przykład class Informacja public System.DateTime create; public String Nazwisko; Lista<Informacja> lista = new Lista<Informacja>(); lista.add(new Informacja()); Marcin Młotkowski Programowanie obiektowe 172 / 224

Przykład class Informacja : IComparable<Informacja> public System.DateTime create; public String Nazwisko; public int CompareTo(Informacja i) if (i.create!= this.create) return i.create.compareto(this.create); return i.nazwisko.compareto(this.nazwisko); Lista<Informacja> lista = new Lista<Informacja>(); lista.add(new Informacja()); Marcin Młotkowski Programowanie obiektowe 172 / 224

Plan wykładu Klasa podstawowa Własne kolekcje Obiekty i wartości 1 2 3 Klasa podstawowa Własne kolekcje Obiekty i wartości Marcin Młotkowski Programowanie obiektowe 173 / 224

Klasa podstawowa Własne kolekcje Obiekty i wartości Zbiór zwyczajów i zaleceń dotyczących programowania w danym języku Marcin Młotkowski Programowanie obiektowe 174 / 224

Klasa System.Object Klasa podstawowa Własne kolekcje Obiekty i wartości Klasa Object a jest nadklasą wszystkich innych klas, nawet jeśli jawnie nie jest to zadeklarowane. a zamiennie można pisać object Marcin Młotkowski Programowanie obiektowe 175 / 224

Metody klasy Object Klasa podstawowa Własne kolekcje Obiekty i wartości class Object public virtual bool Equals(Object obj); public virtual int GetHashCode(); public virtual string ToString();... Marcin Młotkowski Programowanie obiektowe 176 / 224

Przypomnienie Klasa podstawowa Własne kolekcje Obiekty i wartości class Samochod : Pojazd... System.Console.WriteLine(new Samochod()) Marcin Młotkowski Programowanie obiektowe 177 / 224

Przypomnienie Klasa podstawowa Własne kolekcje Obiekty i wartości class Samochod : Pojazd... System.Console.WriteLine(new Samochod()) Otrzymamy Samochod Chcemy auto marki: Syrena Marcin Młotkowski Programowanie obiektowe 177 / 224

Implementacja Klasa podstawowa Własne kolekcje Obiekty i wartości class Samochod : Pojazd public override string ToString() return String.Format("auto marki: 0", this.marka); Marcin Młotkowski Programowanie obiektowe 178 / 224

Zastosowanie Klasa podstawowa Własne kolekcje Obiekty i wartości bryka = new Samochod(); // zamiast: Console.WriteLine(bryka.info()); Console.WriteLine(bryka); Console.WriteLine("To jest "+ bryka); Marcin Młotkowski Programowanie obiektowe 179 / 224

Własne kolekcje Klasa podstawowa Własne kolekcje Obiekty i wartości class Lista<T>... Lista list; for (int i = 0; i < list.length; i++) System.Console.WriteLine(list[i]); Marcin Młotkowski Programowanie obiektowe 180 / 224

Klasa podstawowa Własne kolekcje Obiekty i wartości Implementacja dostępu indeksowanego class Lista<T> Lista<T> next; protected T val; public T this[int indeks] get if (indeks == 0) return val; return this.next[indeks 1]; Marcin Młotkowski Programowanie obiektowe 181 / 224

Przykłady użycia Klasa podstawowa Własne kolekcje Obiekty i wartości Lista<int> list = new Lista<int>(); list.add(4); list.add(8); System.Console.WriteLine(list[2]); for (int i = 0; i < list.length; i++) System.Console.WriteLine(list[i]); Marcin Młotkowski Programowanie obiektowe 182 / 224

Prawdziwe kolekcje Klasa podstawowa Własne kolekcje Obiekty i wartości foreach(int e in list) System.Console.WriteLine(e); Marcin Młotkowski Programowanie obiektowe 183 / 224

Implementacja Klasa podstawowa Własne kolekcje Obiekty i wartości Zaprogramujemy klasę Lista<T> implementującą interfejs System.Collections.IEnumerable; interfejs IEnumerable wymaga implementacji metody IEnumerator GetEnumerator(); zaprogramujemy enumerator ListEnum<T> implementujący interfejs IEnumerator; zaprogramujemy klasę Element<T>. Marcin Młotkowski Programowanie obiektowe 184 / 224

Klasa podstawowa Własne kolekcje Obiekty i wartości Implementacja elementów listy class Element<T> public T val; public Element<T> next; Marcin Młotkowski Programowanie obiektowe 185 / 224

Implementacja listy Klasa podstawowa Własne kolekcje Obiekty i wartości using System.Collections; class Lista<T> : IEnumerable Element<T> lista; public void Add(T val)... // Implementacja interfejsu public IEnumerator GetEnumerator() return new ListEnum<T>(lista); Marcin Młotkowski Programowanie obiektowe 186 / 224

Schemat Klasa podstawowa Własne kolekcje Obiekty i wartości Element<T> Element<T> Element<T> Element<T> IEnumerator MoveNext() Current get; Marcin Młotkowski Programowanie obiektowe 187 / 224

Klasa podstawowa Własne kolekcje Obiekty i wartości Algorytm działania enumeratora Schemat zainicjowanie przeglądania kolekcji; zwracanie kolejnych elementów; sygnał końca kolekcji. Marcin Młotkowski Programowanie obiektowe 188 / 224

Implementacja enumeratora Klasa podstawowa Własne kolekcje Obiekty i wartości class ListEnum<T> : IEnumerator Element<T> lista; public ListEnum(Element<T> lista)... public bool MoveNext()... public object Current... public void Reset()... Marcin Młotkowski Programowanie obiektowe 189 / 224

Implementacja enumeratora Klasa podstawowa Własne kolekcje Obiekty i wartości class ListEnum<T> : IEnumerator Element<T> lista; public ListEnum(Element<T> lista) this.lista = lista; public bool MoveNext()... public object Current... public void Reset()... Marcin Młotkowski Programowanie obiektowe 189 / 224

Klasa podstawowa Własne kolekcje Obiekty i wartości Implementacja enumeratora class ListEnum<T> : IEnumerator Element<T> lista; public ListEnum(Element<T> lista)... public bool MoveNext() if (this.current == null) this.current = this.lista; else this.current = this.current.next; return this.current!= null; public object Current... public void Reset()... Marcin Młotkowski Programowanie obiektowe 189 / 224

Implementacja enumeratora Klasa podstawowa Własne kolekcje Obiekty i wartości class ListEnum<T> : IEnumerator Element<T> lista; public ListEnum(Element<T> lista)... public bool MoveNext()... public object Current get return current.val; public void Reset()... Marcin Młotkowski Programowanie obiektowe 189 / 224

Implementacja enumeratora Klasa podstawowa Własne kolekcje Obiekty i wartości class ListEnum<T> : IEnumerator Element<T> lista; public ListEnum(Element<T> lista)... public bool MoveNext()... public object Current... public void Reset() this.current = this.lista; Marcin Młotkowski Programowanie obiektowe 189 / 224

Zastosowanie Klasa podstawowa Własne kolekcje Obiekty i wartości Lista<int> list = new Lista<int>(); list.add(4); list.add(8); foreach(int e in list) Console.WriteLine(e); Marcin Młotkowski Programowanie obiektowe 190 / 224

Gdzie przechowujemy dane Klasa podstawowa Własne kolekcje Obiekty i wartości obiekty wartości Marcin Młotkowski Programowanie obiektowe 191 / 224

Wartości (value types) Klasa podstawowa Własne kolekcje Obiekty i wartości Typy podstawowe: int, float, bool, etc. zmienne przechowują wartości; przypisanie zmiennej innej zmiennej oznacza skopiowanie wartości; wartości są przechowywane na stosie; dla typów podstawowych istnieją odpowiednie klasy (typy referencyjne), np. bool int float System.Boolean System.Int32 System.Single Marcin Młotkowski Programowanie obiektowe 192 / 224

Obiekty (refrencje) Klasa podstawowa Własne kolekcje Obiekty i wartości zmienne przechowują referencje do obiektów; przypisanie zmiennej zmiennej oznacza skopiowanie referencji, nie wartości; obiekty przechowywane są na stercie. Marcin Młotkowski Programowanie obiektowe 193 / 224

Jawna konwersja typów Klasa podstawowa Własne kolekcje Obiekty i wartości Zamiana wartości na obiekt (boxing) int i = 123; object o = (object)i; Zamiana obiektu na wartość (unboxing) int i = 123; object o = (object)i; int j = (int)o; Marcin Młotkowski Programowanie obiektowe 194 / 224

Niejawna konwersja Klasa podstawowa Własne kolekcje Obiekty i wartości Można pomijać operator konwersji, np: Zamiana wartości na obiekt (boxing) int i = 123; object o = i; Zamiana obiektu na wartość (unboxing) int i = 123; object o = i; int j = o; Marcin Młotkowski Programowanie obiektowe 195 / 224