Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Klasy i obiekty. Logiczna spójność danych –Przykład - cząsteczka Prehistoria – typy proste Historia – struktury Programowanie obiektowe –Enkapsulacja.

Podobne prezentacje


Prezentacja na temat: "Klasy i obiekty. Logiczna spójność danych –Przykład - cząsteczka Prehistoria – typy proste Historia – struktury Programowanie obiektowe –Enkapsulacja."— Zapis prezentacji:

1 Klasy i obiekty

2 Logiczna spójność danych –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

3 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ę

4 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) return false; float[] c = pt.getCoordinates(); for (int i=0; i

5 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==q "+(p==q)+ " p.equals(q) "+ (p.equals(q))); 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)

6 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.

7 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...

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

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


Pobierz ppt "Klasy i obiekty. Logiczna spójność danych –Przykład - cząsteczka Prehistoria – typy proste Historia – struktury Programowanie obiektowe –Enkapsulacja."

Podobne prezentacje


Reklamy Google