Programowanie Obiektowe ćwiczenia 14 Ćwiczenie 1



Pobieranie 31.07 Kb.
Data03.05.2016
Rozmiar31.07 Kb.

Programowanie Obiektowe


ćwiczenia 14

Ćwiczenie 1


Podany niżej przykład zawiera klasy A i B, gdzie B jest pochodną klasy A, oraz klasę Dispatch zawierającą metodę main(). Proszę uruchomić ten przykład i zwrócić uwagę na to, która z metod callme() zostanie tak naprawdę wywołana w funkcji main().
class A

{

void callme()



{

System.out.println(”Metoda callme() klasy A”);

}

}

class B extends A



{

void callme()

{

System.out.println(“Metoda callme() klasy B”);



}

}
class Dispatch

{

public static void main(String args[])



{

A a = new A();

B b = new B();

a.callme();

b.callme();

a = b;


a.callme();

}

}



Uwaga: Proszę zwrócić uwagę, że powyższy przykład wskazuje, iż w Javie mechanizm polimorfizmu jest wbudowany w język. W języku C++ musieliśmy jawnie deklarować, ze dana metoda jest wirtualna. Można powiedzieć, że z punktu widzenia języka C++ wszystkie metody Javy są wirtualne.


Ćwiczenie 2


W poniższym przykładzie zdefiniowano klasy Point i Point3D. Uruchomić ten przykład, a następnie wyjaśnić, które z metod distnace() są wywoływane.
class Point

{

int x, y



Point(int x, int y)

{

this.x = x;



this.y = y;

}

double distance(int x, int y)



{

int dx = this.x – x;

int dy = this.y – y;

return Math.sqrt(dx*dx + dy*dy);

}

double distance (Point p)



{

return distance(p.x, p.y);

}

}

class Point3D extends Point



{

int z;


Point3D(int x, int y, int z)

{



}

Point3D()

{



}



double distance(int x, int y)

{

double dx = (this.x / z) – x;



double dy = (this.y / z) – y;

return Math.sqrt(dx*dx + dy*dy);

}

}

class Point3Ddist



{

public static main(String args[])

{

Point3D p = new Point3D (3, 4, 5);



Point q = new Point (4, 6);
System.out.println(p.distance(4, 6)= “+p.ditance(4,6));

System.out.println(p.distance(q)= “+p.distance(q));

}

}
Skompilować i uruchomić:



javac Point3Ddist.java

java Point3Ddist



Ćwiczenie 3


Poniższy fragment mógłby się znaleźć na początku każdego z programów, w których będziemy potrzebowali  wczytywania liczb z klawiatury. Wczytywaną liczbę otrzymamy wywołując Reader.getInt(). Dodać klasę Test, które będzie zawierała funkcje main(), w której będzie wykorzystana klasa Reader oraz metoda getInt().
import java.io.DataInputStream;
class Reader {

public static int getInt()


{ int wynik;
   String str;
   DataInputStream we = new DataInputStream(System.in);
   try{
      str = we.readLine();
   }catch(java.io.IOException e)
   {
  str = "0";
}

   try{


      wynik = Integer.valueOf(str).intValue() ;
  }catch(Exception e)
     {
  wynik = 0;
  }
  return wynik;

}
Wprowadzenie do pakietu AWT


AWT (Abstract Windowing Toolkit) jest zbiorem klas, które zapewniają tworzenie prostych elementów graficznego interfejsu użytkownika. Większość z tych klas jest zawarta w pakiecie java.awt.
Ćwiczenie 4

Poniższy tekst kod umieścić w pliku o nazwie Okno1.java, a następnie skompilować i uruchomić odpowiednią klasę. Następnie poeksperymentować z ustawieniami właściwości kolor czy tekst na pasku tytułowym okna.


import java.awt.*;
public class Okno1

{

public static void main(String []s)



{

Frame F=new Frame("Moje okno");

F.resize(400,400);

F.setBackground(Color.blue);

F.show();

}

}


Ćwiczenie 5

Kolejny przykład wprowadza wykorzystanie klasy Graphics. Gdy używamy graficznych komponentów AWT musimy zadeklarować w programie tzw. kontekst graficzny. Jest to po prostu obiekt typu Graphics. Następnie możemy wykorzystywać metody takie jak paint(), fillRect(), drawRect() itd.


import java.awt.*;
public class Hello{
public static void main(String args[]){

Frame f=new Frame("Imię i Nazwisko");

f.resize(400,400);

f.setBackground(Color.yellow);

f.show();

Graphics g=f.getGraphics();

g.drawLine(0,0,100,200);

g.drawString("Hello, world", 40,40);

g.drawRect(150,150,50,50);

}

}


Ćwiczenie 6

Dodajemy obsługę zdarzeń, np. zamknięcie okna (WINDOW_DESTROY) oraz przeciąganie myszką (MOUSE_DRAG).


import java.awt.*;
public class Okno2 extends Frame{
Okno3(String s,int x, int y){

super(s);

resize(x,y);

setBackground(Color.white);

show();

}

public boolean handleEvent(Event e){



if (e.id==Event.MOUSE_DRAG){

Graphics g=getGraphics();

g.setColor(Color.black);

g.drawLine(e.x, e.y, e.x, e.y);

}

if (e.id==Event.WINDOW_DESTROY){



System.exit(0);

}

return true;



}

public static void main(String args[])

{

Okno2 f=new zad3("Imię i nazwisko",400,400);



}

}
Ćwiczenie 7

W tym ćwiczeniu dodajemy do programu obsługę przycisków (klasa Button).

import java.awt.*;


public class Okno3 extends Frame{

Button red, blue;

Okno3(String s,int x, int y){

super(s);

resize(x,y);

setBackground(Color.white);

red=new Button("red");

blue=new Button("blue");

setLayout(new FlowLayout());

add(red);

add(blue);

show();


}

public boolean handleEvent(Event e){

if (e.id==Event.MOUSE_DRAG){

Graphics g=getGraphics();

g.setColor(Color.black);

g.drawLine(e.x, e.y, e.x, e.y);

}

if (e.id == Event.WINDOW_DESTROY){



System.exit(0);

}

if (e.target == red){



setBackground(Color.red);

}

if (e.target==blue){



setBackground(Color.blue);

}

return true;



}

public static void main(String args[])



{

Okno3 f=new Okno3("Imię i Nazwisko",400,400);



}

}


©absta.pl 2016
wyślij wiadomość

    Strona główna