9. Kompozycja i dziedziczenie Kompozycja – cd.

Transkrypt

9. Kompozycja i dziedziczenie Kompozycja – cd.
9. Kompozycja i dziedziczenie
Kompozycja – cd.
// Punkt.java
package geometria;
public class Punkt {
double x, y;
public Punkt(double x, double y) { this.x = x; this.y = y; }
public void przesuń(double dx, double dy)
{
x += dx;
y += dy;
}
public String toString()
{
return "(" + x + ", " + y + ")";
}
}
// Linia.java
package geometria;
public class Linia {
Punkt p1, p2;
public Linia(double x1, double y1, double x2, double y2)
{
p1 = new Punkt(x1, y1);
p2 = new Punkt(x2, y2);
}
public void przesuń(double dx, double dy)
{
p1.przesuń(dx, dy);
p2.przesuń(dx, dy);
}
public void przesuń(Point p)
{
p1.przesuń(p.x, p.y);
p2.przesuń(p.x, p.y);
}
public String toString()
{
return "(" + p1 + ", " + p2 + ")";
}
}
// Rysunki
import geometria.*;
public class Rysunki {
public static void main(String args[])
{
Punkt p = new Punkt(0,1);
System.out.println(p);
p.przesuń(1,1);
System.out.println(p);
Linia L1 = new Linia(0,0,1,1),
L2 = new Linia(0,0,1,2);
L1.przesuń(1,0);
L2.przesuń(new Punkt(0,1));
System.out.println(L1);
System.out.println(L2);
}
}
// Figura.java
package geometria;
public class Figura
{
Linia[] linie;
public Figura(double ... wsp)
{
linie = new Linia[wsp.length/2];
for(int i = 0; i < linie.length-1; ++i)
linie[i] = new Linia(wsp[2*i],
wsp[2*i+1],
wsp[2*i+2],
wsp[2*i+3]);
linie[linie.length-1] = new Linia(wsp[wsp.length-2],
wsp[wsp.length-1],
wsp[0],
wsp[1]);
}
}
// Figura2.java
package geometria;
public class Figura2
{
Punkt[] punkty;
int ile;
public Figura2(int rozmiar)
{
punkty = new Punkt[rozmiar];
ile = 0;
}
public void dodaj(double x, double y)
{
punkty[ile++] = new Punkt(x, y);
}
public int rozmiar()
{
return ile;
}
public Punkt weź(int i)
{
return punkty[i];
}
}
// Rysunki
import geometria.*;
public class Rysunki {
public static void main(String args[])
{
Figura f1 = new Figura(0,0,1,1,0,1);
f2 = new Figura(0,0,1,0,1,1,0,1);
}
}
Figura2 f = new Figura2(10);
f.dodaj(0,0);
f.dodaj(1,0);
f.dodaj(1,1);
for(int i = 0; i < f.rozmiar(); ++i)
f.weź(i).przesuń(1,0);
Dziedziczenie
kompozycja to relacja część-całość (nowa klasa zawiera istniejącą klasę)
dziedziczenie to relacja generalizacja-specjalizacja (nowa klasa jest szczególnym rodzajem
istniejącej klasy)
Efekty dziedziczenia:
- dodanie metody
//
TV.java
class Telewizor
{
void wlacz()
void wylacz()
void glosnosc()
void kontrast()
void jasnosc()
}
{
{
{
{
{
...
...
...
...
...
}
}
}
}
}
class TelewizorKolorowy extends Telewizor
{
void nasycenie(){ ... }
}
public class TV
{
public static void main(String[] args)
{
TelewizorKolorowy tv = new TelewizorKolorowy();
tv.wlacz();
tv.glosnosc();
tv.kontrast();
tv.nasycenie();
tv.wylacz();
}
}
- dodanie pola
//
Firma.java
class Osoba
{
String imię;
String nazwisko;
}
class Pracownik extends Osoba
{
double pensja;
}
public class Firma
{
public static void main(String[] args)
{
Pracownik p = new Pracownik();
p.imię = "Jan";
p.nazwisko = "Kowalski";
p.pensja = 600.0;
}
}
- przedefiniowanie metody
//
TV.java
class Telewizor
{
public String toString() { return "Jestem telewizorem"; }
}
class TelewizorKolorowy extends Telewizor
{
public String toString() { return "Jestem telewizorem kolorowym"; }
}
public class TV
{
public static void main(String[] args)
{
Telewizor tv1 = new Telewizor();
TelewizorKolorowy tv2 = new TelewizorKolorowy();
System.out.println(tv1);
System.out.println(tv2);
}
}

Podobne dokumenty