Klasy i obiekty - PowerPoint PPT Presentation

1 / 9
About This Presentation
Title:

Klasy i obiekty

Description:

Konstruktory przeciazone rozr zniane po sygnaturze. Point() Point(int) Point(float ... draw(gr, Color.BLACK, origin, 1); Jak zwykle, przeciazajac to i owo... – PowerPoint PPT presentation

Number of Views:39
Avg rating:3.0/5.0
Slides: 10
Provided by: unigrid
Category:

less

Transcript and Presenter's Notes

Title: Klasy i obiekty


1
Klasy i obiekty

2
Klasy i obiekty
  • Logiczna spójnosc danych
  • Przyklad - czasteczka
  • Prehistoria typy proste
  • Historia struktury
  • Programowanie obiektowe
  • Enkapsulacja
  • Obiekty jako metoda na zapanowanie nad kodem
  • Anatomia i fizjologia klasy i obiektu
  • Przyklad triangulacja na plaszczyznie
  • Dziedziczenie
  • Polimorfizm
  • Przyklad 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 floatdimension
  • public Point(float coords)
  • dimension coords.length
  • // coordinates coords
  • coordinates coords.clone()
  • public int getDimension()
  • return dimension
  • public float getCoordinates()

Pakiety organizuja klasy w strukture
katalogów. Deklaracja klasa publiczna (dostepna
zewszad) Deklaracje i inicjalizacje pól danych
pola chronione - enkapsulacja Konstruktor pusty
domyslny Konstruktory przeciazone rozrózniane
po sygnaturze Point() Point(int)
Point(float) Niebezpieczne coords mozna
zmienic poza klasa Bezpiecznie zapamietujemy
kopie "getter" z automatu enkapsulacji Niebez
pieczne coordinates mozna zmienic poza
klasa Bezpiecznie zwracamy kopie
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 i0
  • iltcoordinates.lengthi)
  • if (ci!coordinatesi)
  • return false

"Setter" przydatny, gdy zbudowalismy "pusty"
punkt. Zauwazmy wstepne sprawdzenie poprawnosci
wymiaru i uzycie clone. Porównywanie trzeba
zaimplementowac explicite! (ab znaczy, ze a i b
sa referencjami do tego samego obiektu) instanceof
sprawdza, czy p mozemy interpretowac jako obiekt
klasy Point. Rzutujemy (cast) interpretujac p
jako obiekt klasy Point. Egzamin sie
zaczyna. Oblany Oblany Zdany!
5
Jak to dziala, 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("pq "(pq)
  • " p.equals(q) " (p.equals(q)))
  • q.setCoords(c)
  • r p
  • System.out.println("pq "(pq)
  • " p.equals(q) " (p.equals(q)))
  • System.out.println("pr "(pr)
  • " p.equals(r) " (p.equals(r)))

Cwiczenie Stworzyc klase Point uzywajac tekstu
z unigrids.icm.edu.pl/java/java3.java Sprawdzic
dzialanie point1point2 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 floatdimension
  • public Point2D (int dimension)
  • this()
  • public Point2D (float coords)
  • if (coords.length!2)
  • return
  • dimension coords.length
  • coordinates coords.clone()
  • Budujemy punkt na plaszczyznie
  • Wymiar musi byc 2, wiec konstruktor
    bezargumentowy moze zrobic cos konkretnego
  • Nadpisujemy
  • Nadpisujemy, sprawdzajac poprawnosc wymiaru.

7
I dorabiamy sie czegos wlasnego
  • public Point2D rotate(Point2D origin, float phi)
  • //implementujemy via transform lub "recznie"
  • public void draw(Graphics gr, Color color,
  • float origin, float scale)
  • Color c gr.getColor()
  • gr.setColor(color)
  • int ix (coordinates0-origin0)scale
  • int iy (coordinates1-origin1)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, przeciazajac to i owo...
8
I pierwsze miedzymordzie
  • 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 ...
9
  • Nie chce mi sie wiecej pisac,
  • wiec
  • galopem do netbeansów
Write a Comment
User Comments (0)
About PowerShow.com