Sunteți pe pagina 1din 4

Lab.

10
Clase abstracte. Polimorfism
1. S se dezvolte clasa abstract A n care sunt definite dou metode:
- metoda abstract calcul();
- metoda durataCalcul() ce returneaz durata exprimat n milisecunde a execu!iei metodei calcul();
"in clasa abstract A se va deriva clasa # ce con!ine implementarea metodei calcul(). Se va dezvolta $i o
clas de test pentru clasa derivat #.
import javax.swing.*;
import java.util.*;
abstract class A
{
abstract public void calcul(int N);
public long durataCalcul(int N){
long t1=!st"m.curr"nt#im"$illis();
calcul(N);
long t%=!st"m.curr"nt#im"$illis();
r"turn (t%&t1);
'
'
class ( "xt"nds A
{
public void calcul(int N)
{
))Calcul"a*a N*N*N produs"
int i+j+,;
long r"*ultat;
-or(i=1;i.=N;i//)
-or(j=1;j.=N;j//)
-or(,=1;,.=N;,//)
r"*ultat=i*j*,;
'
'
class #"st
{
public static void main(tring args01)
{
-inal int N=1222;
( b=n"w (();
!st"m.out.println(3durata calcul = 3/b.durataCalcul(N)/3 ms.3);
'
'
%. S se construiasc clasa &unct ce are ca variabile de instan! dou numere ntre'i x $i ( )
coordonatele unui punct n plan $i ca metode:
- Constructorul ce face ini!ializrile;
- 'et*() ce returneaz valoarea coordonatei x
- 'et+() ce returneaz valoarea coordonatei (
- afisare() n care se afi$eaz coordonatele punctului din clasa &unct
"in clasa &unct se deriveaz dou clase: &unctColor $i &unct,".
1
Clasa &unctColor fa! de clasa &unct are n plus o variabil de instan! n care este memorat culoarea
punctului un nou constructor n care este ini!ializat $i culoarea metoda 'etCuloare() ce returneaz
culoarea $i redefine$te metoda clasei de baz afi$are() afi$-nd pe l-n' coordonatele x $i ( $i culoarea.
Clasa &unct," ce reprezint un punct n spa!iu fa! de clasa &unct are n plus o variabil de instan! z
un nou constructor n care sunt ini!ializate toate cele trei coordonate metoda 'et.() ce returneaz
valoarea coordonatei z $i redefine$te metoda clasei de baz afi$are() afi$-nd pe l-n' coordonatele x $i (
$i coordonata z.
/olosind aceste trei clase se va dezvolta o aplica!ie n care se vor citi de la tastatur 0 puncte (01 citit
anterior) de tipul &unctColor sau &unct,". &entru fiecare punct n momentul citirii utilizatorul aplica!iei
va specifica dac va introduce un &unctColor sau un &unct,". Cele 0 puncte se vor memora ntr1un
vector de obiecte de tipul &unct (clasa de baz). 2n final se vor afi$a pentru fiecare punct din cele 0
informa!iile memorate (pentru fiecare punct se va apela metoda afi$are()). Aceast aplica!ie ilustreaz
conceptul de polimorfism (Compilatorul $tie la rulare ce versiune de metod afi$are() s apeleze).
import javax.swing.*;
class 4unct
{
privat" int x;))coordonata x a punctului
privat" int !;
public 4unct(int x2+ int !2)
{
x=x2;
!=!2;
'
public int g"t5()
{
r"turn x;
'
public int g"t6()
{
r"turn !;
'
public void a-isar"()
{
!st"m.out.println(3x=3/x);
!st"m.out.println(3!=3/!);
'
'
class 4unctColor "xt"nds 4unct
{
privat" tring culoar";
public 4unctColor(int x+ int !+ tring culoar")
{
sup"r(x+!);
t7is.culoar"=culoar";
'
public tring g"tCuloar"()
{
r"turn culoar";
'

public void a-isar"()
{
%
))!st"m.out.println(3x=3/x);89:;#< x & "st" var. privata <
!st"m.out.println(3x=3/g"t5());
!st"m.out.println(3!=3/g"t6());;
!st"m.out.println(3culoar"=3/culoar");
'
'
class 4unct=> "xt"nds 4unct
{
privat" int *;
public 4unct=>(int x+int !+ int * )
{
sup"r(x+!);
t7is.*=*;
'
public int g"t?()
{
r"turn *;
'
public void a-isar"()
{
!st"m.out.println(3x=3/g"t5());
!st"m.out.println(3!=3/g"t6());
!st"m.out.println(3*=3/*);
'
'

class A-isar"4unct"
{
public static void main (tring args01)
{
int N;))numarul d" punct"
N=;nt"g"r.pars";nt(@Aption4an".s7ow;nput>ialog(3N=3));
4unct p01=n"w 4unct0N1;))v"ctorul d" obi"ct" 4unct (clasa d"
))ba*a)
int i;
-or(i=2;i.N;i//){
tring s9aspuns=@Aption4an".s7ow;nput>ialog(3#ip punct
(2+1+%) B 3);
int raspuns=;nt"g"r.pars";nt(s9aspuns);
int x=;nt"g"r.pars";nt(@Aption4an".s7ow;nput>ialog(3x=3));
int !=;nt"g"r.pars";nt(@Aption4an".s7ow;nput>ialog(3!=3));
i-(raspuns==2){
))cit"st" un 4unctB
p0i1=n"w 4unct(x+!);'
"ls" i-(raspuns==1){
))cit"st" un 4unctColorB
tring culoar"=@Aption4an".s7ow;nput>ialog(3culoar"=3);
p0i1=n"w 4unctColor(x+!+culoar");'
"ls" i-(raspuns==%){
))cit"st" un 4unct=>B
int *=;nt"g"r.pars";nt(@Aption4an".s7ow;nput>ialog(3*=3));
p0i1=n"w 4unct=>(x+!+*);'
,
'))-or
))A-isar" v"ctorB
-or(i=2;i.N;i//)
p0i1.a-isar"();
'
'
Tema
,. S construiasc clasa 0umr ce are ca variabil de instan! un numr ntre' a $i ca metode:
- constructorul;
- afisare().
"in clasa 0umar se va deriva clasa "oua0umere n care se va adu'a variabila de instan! b (ce
reprezint al doilea numr) $i se va modifica constructorul $i metoda afisare().
/olosind cele dou clase se va dezvolta o aplica!ie n care se 'enereaz un numr aleator 3 sau 1. "ac
este 3 se va instan!ia un obiect din clasa 0umar (prin citire de la tastatur) dac este 1 se va instan!ia un
obiect din clasa "ou0umere (tot prin citire de la tastatur). &entru obiectul instan!iat se va apela metoda
afisare().
4. S se construiasc clasa Cerc ce are ca variabil de instan! privat un numr ntre' r ce
reprezint raza unui cerc. 2n aceast clas avem ca metode:
- constructorul ce face ini!ializarea razei;
- 'et5aza() ce returneaz raza;
- calculArie()ce returneaz aria cercului;
- sunt6'ale() ce are ca parametru un Cerc c $i care returneaz tru" dac cercul curent este e'al cu
cercul c (au aceea$i raz).
- afisare() ce afi$eaz raza cercului.
"in clasa Cerc se va deriva clasa Cerc6xtins n care se vor adu'a ca variabile de instan! x $i (:
coordonatele centrului $i se vor redefini metodele sunt6'ale() (cercurile sunt e'ale c-nd au aceea$i raz $i
acelea$i coordonate ale centrului) $i afisare() (pe l-n' raz va afi$a $i coordonatele centrului)
Scrie!i $i o clas de test pentru clasa Cerc6xtins.
/olosind cele dou clase anterioare Cerc $i Cerc6xtins s se dezvolte o aplica!ie n care se vor citi
0 cercuri (de tipul Cerc sau Cerc6xtins) ce se memoreaz ntr1un vector. Citirea unui obiect de tip Cerc
sau Cerc6xtins este dat de valoarea 3 sau 1 a unui numr aleator 'enerat. &entru cele 0 cercuri se va
apela metoda afisare().
4

S-ar putea să vă placă și

  • SDA1 05 Algoritmi Recursivi
    SDA1 05 Algoritmi Recursivi
    Document15 pagini
    SDA1 05 Algoritmi Recursivi
    Mihai Mihai
    Încă nu există evaluări
  • Coada
    Coada
    Document2 pagini
    Coada
    Mihai Mihai
    Încă nu există evaluări
  • Lab 12
    Lab 12
    Document4 pagini
    Lab 12
    Mihai Mihai
    Încă nu există evaluări
  • Grafuri - Parcurgere Latime
    Grafuri - Parcurgere Latime
    Document3 pagini
    Grafuri - Parcurgere Latime
    Mihai Mihai
    Încă nu există evaluări
  • Baze de Date Proiect
    Baze de Date Proiect
    Document2 pagini
    Baze de Date Proiect
    Mihai Mihai
    Încă nu există evaluări
  • Baze de Date Proiect
    Baze de Date Proiect
    Document2 pagini
    Baze de Date Proiect
    Mihai Mihai
    Încă nu există evaluări
  • IBD Lab 01 - Introducere
    IBD Lab 01 - Introducere
    Document10 pagini
    IBD Lab 01 - Introducere
    Mihai Mihai
    Încă nu există evaluări
  • 4
    4
    Document2 pagini
    4
    Mihai Mihai
    Încă nu există evaluări
  • Curs C++
    Curs C++
    Document10 pagini
    Curs C++
    Steluta Robu
    Încă nu există evaluări
  • Cap 01
    Cap 01
    Document10 pagini
    Cap 01
    Iurasog Mihail-Lucian
    Încă nu există evaluări