Klasy i obiekty.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Dzisiejszy wykład Wyjątki.
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 4 Wojciech Pieprzyca.
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe PO PO - LAB 3 Wojciech Pieprzyca.
Static, const, volatile.
Dziedziczenie. Po co nam dziedziczenie? class osoba { char * imie, char * imie, * nazwisko; * nazwisko;public: void wypisz_imie(); void wypisz_imie();
Programowanie Obiektowe w Javie (c.d.)
Programowanie obiektowe w Javie
Wielodziedziczenie od środka Konrad Lipiński
Hibernate Klasy trwałe
C++ wykład 2 ( ) Klasy i obiekty.
Zaawansowane technologie Javy Wykład 1 (26 lutego 2013)
Czytanie, pisanie i rysowanie – cd.. Jeszcze jeden strumyk PrintStream działa jak PrintWriter, ale: Używa domyślnego (systemowego) kodowania Nie wyrzuca.
Tablice tablica jest sekwencją elementów tego samego typu (prostego lub obiektowego) w Javie tablice są obiektami, a zmienne tablicowe przechowują referencję
Odwzorowania relacyjno-obiektowe Hibernate Klasy trwałe.
Hibernate relacje.
Podstawy C# Grupa .NET PO.
Programowanie obiektowe III rok EiT
Podstawy programowania
Podstawy programowania II
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Podstawy inżynierii oprogramowania Zofia Kruczkiewicz
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
Programowanie obiektowe w C++
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT
Andrzej Repak Nr albumu
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 7 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
PIO 2_2, Zofia Kruczkiewicz1 Wykład 2 – część druga Iteracyjno-rozwojowy cykl oprogramowania 2.
Java 3 MPDI Programowanie obiektowe W5. Java - obiektowy język programowania stworzony przez firmę Sun Microsystems. Java jest językiem tworzenia programów.
VisNow – struktury danych
Programowanie obiektowe 2013/2014
  ELEMENTY JĘZYKA JAVA komentarze w Javie, słowa kluczowe i operatory, proste typy danych, tablice, podstawowy zestaw instrukcji.
Programowanie w języku C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
Kurs języka C++ – wykład 4 ( )
K URS JĘZYKA C++ – WYKŁAD 2 ( ) Klasy i obiekty.
Technologie internetowe Wykład 5 Wprowadzenie do skrytpów serwerowych.
Konstruktory i Destruktory. Konstruktor Konstruktor — co to? Konstruktor — co to? jest metodą służącą do inicjowania obiektów danej klasy jest metodą.
Paweł Starzyk Obiektowe metody projektowania systemów
Dziedziczenie Wykład 7 Dziedziczenie sekwencyjne
Partnerstwo dla Przyszłości 1 Lekcja 27 Klasy i obiekty.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Kolekcje (3) Zbiory. Porównywanie i porządkowanie elementów kolekcji. (c) Krzysztof Barteczko 2014.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Język Java Paweł Rajba
Programowanie Obiektowe – Wykład 6
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Zaawansowane technologie Javy Wykład 1 (23 lutego 2017)
Programowanie Obiektowe – Wykład 2
Programowanie obiektowe
BYDGOSKI FESTIWAL NAUKI
PGO Dziedziczenie Michail Mokkas.
Zapis prezentacji:

Klasy i obiekty

Klasy i obiekty Logiczna spójność danych Prehistoria – typy proste Przykład - cząsteczka Prehistoria – typy proste Historia – struktury Programowanie obiektowe Enkapsulacja Obiekty jako metoda na zapanowanie nad kodem Anatomia i fizjologia klasy i obiektu Przykład – triangulacja na płaszczyźnie Dziedziczenie Polimorfizm Przykład – komponenty wizualne

Anatomia i fizjologia klasy i obiektu package pl.edu.icm.geometry; public class Point { protected int dimension = 0; protected float[] coordinates = null; public Point(){ } public Point(int dimension) { this.dimension = dimension; coordinates = new float[dimension]; } public Point(float[] coords) { dimension = coords.length; // coordinates = coords; coordinates = coords.clone(); public int getDimension() { return dimension; public float[] getCoordinates(){ // return coordinates; return coordinates.clone(); Pakiety organizują klasy w strukturę katalogów. Deklaracja – klasa publiczna (dostępna zewsząd) Deklaracje i inicjalizacje pól danych pola chronione - enkapsulacja Konstruktor pusty – domyślny Konstruktory przeciążone – rozróżniane po sygnaturze Point() Point(int) Point(float[]) Niebezpieczne – coords można zmienić poza klasą Bezpiecznie: zapamiętujemy kopię "getter" – z automatu enkapsulacji Niebezpieczne – coordinates można zmienić poza klasą Bezpiecznie: zwracamy kopię

Anatomia i fizjologia klasy i obiektu public void setCoordinates(float[] coords) { if (dimension!=0 && dimension!=coords.length) return; dimension = coords.length; coordinates = coords.clone(); } public boolean equals(Object p) { if (! p instanceof Point) return false; Point pt = (Point)p; if (pt.getDimension()!=dimension) float[] c = pt.getCoordinates(); for (int i=0; i<coordinates.length;i++) if (c[i]!=coordinates[i]) return true; . . . "Setter": przydatny, gdy zbudowaliśmy "pusty" punkt. Zauważmy wstępne sprawdzenie poprawności wymiaru i użycie clone. Porównywanie trzeba zaimplementować explicite! (a==b znaczy, że a i b są referencjami do tego samego obiektu) instanceof sprawdza, czy p możemy interpretować jako obiekt klasy Point. Rzutujemy (cast) interpretując p jako obiekt klasy Point. Egzamin się zaczyna…. Oblany … Zdany!

Jak to działa, czyli co jest czym Main: float[] c = {1,2,3,4,5}; Point p = new Point(c); Point q = new Point(); Point r; System.out.println("p==q "+(p==q)+ " p.equals(q) "+ (p.equals(q))); q.setCoords(c); r = p; System.out.println("p==r "+(p==r)+ " p.equals(r) "+ (p.equals(r))); Ćwiczenie: Stworzyć klasę Point używając tekstu z unigrids.icm.edu.pl/java/java3.java Sprawdzić działanie point1==point2 i point1.equals(point2)

Po przodkach dziedziczymy honor (ale niekoniecznie metody) package pl.edu.icm.geometry; public class Point2D extends Point { public Point2D (){ dimension = 2; coordinates = new float[dimension]; } public Point2D (int dimension) { this(); public Point2D (float[] coords) { if (coords.length!=2) return; dimension = coords.length; coordinates = coords.clone(); Budujemy punkt na płaszczyźnie: Wymiar musi być 2, więc konstruktor bezargumentowy może zrobić coś konkretnego Nadpisujemy… Nadpisujemy, sprawdzając poprawność wymiaru.

I dorabiamy się czegoś własnego public Point2D rotate(Point2D origin, float phi){ //implementujemy via transform lub "ręcznie" } public void draw(Graphics gr, Color color, float[] origin, float scale){ Color c = gr.getColor(); gr.setColor(color); int ix = (coordinates[0]-origin[0])*scale; int iy = (coordinates[1]-origin[1])*scale; gr.drawOval(ix-1,iy-1,2,2); gr.setColor(c); public void draw(Graphics gr){ float[] origin = {0,0}; draw(gr, Color.BLACK, origin, 1); Jak zwykle, przeciążając to i owo...

I pierwsze międzymordzie: public interface Drawable { public void draw(Graphics, Color, float[], float); public void draw(Graphics gr); } oraz jego implementacja public class Point2D extends Point implements Drawable { ... }

Nie chce mi się więcej pisać, galopem do netbeansów