Przykłady zadań
1. Dziedziczenie metod bez przedefiniowania i z przedefiniowaniem: rola słowa kluczowego super; przeciążanie metod.
Zdefiniuj metody pokaz() w klasach Towar1 (bez parametrów) i Towar2 (z parametrem), tak, aby poprawnie działała funkcja main w klasie Towar.
class Towar1 { int cena;
String nazwa;
Towar1(int cena_, String nazwa_)
{ cena=cena_; nazwa=new String (nazwa_);}
void pokaz() { /*...*/ } //na ekranie nazwa i cena }
class Towar2 extends Towar1 { int podatek;
//zdefiniuj konstruktor, który dziedziczy po Towar1 i //przypisuje podatek_ do składowej podatek
//oraz metode pokaz, która na ekranie wyświetla dane:
cena, //nazwa za pomocą dziedziczonej metody pokaz() oraz
podatek //wraz przekazanym przez nagłówek łańcuchem zawierającym //menu- wykorzystaj do definicji słowo super }
public class Towar
{ public static void main (String[] args) { Towar2 p2 = new Towar2(20,”ksiazka”,5);
Towar1 p1 = new Towar1(15, ”kalendarz”);
p2.pokaz(); //ksiazka, 20 p2.pokaz(”nazwa, cena, podatek: ”);
// nazwa, cena, podatek: ksiazka, 20 5
p1.pokaz(); } //kalendarz, 15 }
2. Polimorfizm czyli korzystanie z metod przedefiniowanych z identycznym nagłówkiem (nazwa, parametry, wynik zwracany przez return). Podaj kody funkcji podaj_typ() i pokaz() w klasie Towar1 i Towar2.
public interface Dane
{ String produkt ="Typ produktu: ";
public void podaj_typ(); } class Towar1 implements Dane
{ int cena;
String nazwa;
Towar1(int cena_, String nazwa_)
{ cena=cena_; nazwa=new String (nazwa_); } void pokaz() { /*...*/ } //wyświetla nazwę i cenę public void podaj_typ () {/*...*/ } //wyświetla typ produktu }
class Towar2 extends Towar1 { int podatek;
//zdefiniuj konstruktor inicjujący atrybuty obiektu, (zastosuj //słowo super) i przypisuje podatek_ do składowej podatek //oraz dwie metody: pokaz(), podaj_typ ()
//pierwsza wyświetla na ekranie dane: cena, nazwa, za pomocą //dziedziczonej metody pokaz oraz podatek - do definicji //wykorzystaj słowo super, druga podaje typ produktu (implementacja metody podaj_typ())
public class Towar
{ static void wyprowadz(/*podać typ parametru p*/) { p.pokaz();
p. podaj_typ (); }
public static void main (String[] args)
{ Towar2 p2 = new Towar2(20,”ksiazka”,5);
Towar1 p1 = new Towar1(15, ”kalendarz”);
wyprowadz(p2); //ksiazka, 20 5
// Typ produktu 2 wyprowadz(p1); } // kalendarz, 15 } // Typ produktu 1
3. Napisz program, który umożliwia obsługę zdarzenia typu Action – zdefiniuj metody zarządcy zdarzeń obsługującej zdarzenie oraz przyciski typu JButton generujące zdarzenia
public class Aplikacja extends JFrame implements ActionListener
{ JButton przycisk = new JButton(/*Podać parametry */);
JTextArea tekst=new JTextArea(/*Podać parametry */);
String dana = new String ();
public Aplikacja()
{ //zdefiniować ciało konstruktora }
public void actionPerformed (ActionEvent evt)
{/*zdefiniować ciało metody obsługującej zdarzenie od przycisku przycisk*/}
public static void main(String[] arg) throws Exception { Aplikacja pr= new Aplikacja();
pr.show();}
}
4. Wykonaj zadanie 1w formie apletu. Wykonaj zadanie 2 w formie apletu. Sposób zdefiniowania metod wynika ze sposobu ich wywołania w metodzie paint klasy Towar. Do drukowania należy użyć metody drawString(String a, int x, int y) klasy Graphics.
W komentarzach w metodzie paint podano, co drukuje się po wywołaniu metod pokaz oraz podaj_typ w metodzie wyprowadz.
import java.awt.*;
import java.applet.*;
class Towar1 { int cena;
String nazwa;
Towar1(int cena_, String nazwa_)
{ cena=cena_; nazwa=new String (nazwa_);}
void pokaz(Graphics g, int a, int b) //na ekranie nazwa i cena { g.drawString(nazwa+", "+cena, a, b); }
}
class Towar2 extends Towar1 { int podatek;
Towar2(/*..*/) { /*..*/ }
void pokaz(/*..*/) { /*..*/ } }
public class Towar extends Applet { public void paint(Graphics g)
{ Towar2 p2 = new Towar2(20,"ksiazka",5);
Towar1 p1 = new Towar1(15,"kalendarz");
p2.pokaz(g,10,20); //ksiazka, 20 p2.pokaz(g,10,40," nazwa, cena, podatek: ");
// nazwa, cena, podatek:
20, ksiazka, 5
p1.pokaz(g,10,80); } //kalendarz, 15 }
5. Wykonaj zadanie 2 w formie apletu. Sposób zdefiniowania metod wynika ze sposobu ich wywołania w metodzie paint klasy Towar. Do drukowania należy użyć metody drawString(String a, int x, int y) klasy Graphics. W komentarzach w metodzi paint podano, co drukuje się po wywołaniu metod pokaz oraz podaj_typ w metodzie wyprowadz.
import java.awt.*;
import java.applet.*;
interface Dane
{ String produkt ="Typ produktu: ";
public void podaj_typ(Graphics g, int a, int b); } class Towar1 implements Dane
{ int cena;
String nazwa;
Towar1(int cena_, String nazwa_)
{ cena=cena_; nazwa=new String (nazwa_);}
void pokaz (Graphics g, int a, int b) //na ekranie nazwa i cena { g.drawString(nazwa+", "+cena, a, b); }
public void podaj_typ(/*..*/) { /* */ }
}
class Towar2 extends Towar1 { int podatek;
Towar2(/*…*/ ) { /*…*/ } void pokaz( /*…*/) { /*..*/ }
public void podaj_typ(/*..*/) { /*….*/}
}
public class Towar extends Applet
{static void wyprowadz(Towar1 p,Graphics g, int a, int b ) { p.pokaz(g,a,b);
p. podaj_typ (g,a,b+20); } public void paint(Graphics g)
{ Towar2 p2 = new Towar2(20,"ksiazka",5);
Towar1 p1 = new Towar1(15,"kalendarz");
wyprowadz(p2,g,10,10); //ksiazka, 20 //5
// Typ produktu 2 wyprowadz(p1,g,10,50); // kalendarz, 15 } // Typ produktu 1 }