Problema 33
import java.util.ArrayList;
abstract class FiguraGeometrica{
private String culoare;
public FiguraGeometrica(String culoare){
this.culoare=culoare;
}
abstract public float calculPerimetru();
public String getCuloare() {
return culoare;
}
public void setCuloare(String culoare) {
this.culoare = culoare;
Observator.getInstance().anunta();//Se putea verifica si daca cumva vechea culoare nu e identica cu noua culoare..
}
}
class Patrat extends FiguraGeometrica{
private float latura;
public Patrat(String culoare, float latura){
super(culoare);
this.latura=latura;
}
public float calculPerimetru(){
return 4*latura;
}
public boolean equals(Object obj) {
if(obj instanceof Patrat)
if(this.latura==((Patrat)obj).latura)
return true;
return false;
}
public float getLatura() {
return latura;
}
public void setLatura(float latura) {
this.latura = latura;
Observator.getInstance().anunta();
}
public String toString() {
return "Patrat:Latura: "+latura;
}
}
class Cerc extends FiguraGeometrica{
private float raza;
public Cerc(String culoare, float raza){
super(culoare);
this.raza=raza;
}
public float calculPerimetru(){
return 0;
}
public boolean equals(Object obj) {
if(obj instanceof Cerc)
return true;
return false;
}
public float getRaza() {
return raza;
}
public void setRaza(float raza) {
this.raza = raza;
Observator.getInstance().anunta();
}
public String toString() {
return "Cerc:Raza: "+raza;
}
}
class Triunghi extends FiguraGeometrica{
private float latura1, latura2, latura3;
public Triunghi(String culoare, float latura1, float latura2, float latura3){
super(culoare);
this.latura1=latura1;
this.latura2=latura2;
this.latura3=latura3;
}
public float calculPerimetru() {
return latura1+latura2+latura3;
}
public boolean equals(Object obj) {
if(obj instanceof Triunghi)
if(this.calculPerimetru()==((Triunghi)obj).calculPerimetru())
return true;
return false;
}
public float getLatura1() {
return latura1;
}
public void setLatura1(float latura1) {
this.latura1 = latura1;
Observator.getInstance().anunta();
}
public float getLatura2() {
return latura2;
}
public void setLatura2(float latura2) {
this.latura2 = latura2;
Observator.getInstance().anunta();
}
public float getLatura3() {
return latura3;
}
public void setLatura3(float latura3) {
this.latura3 = latura3;
Observator.getInstance().anunta();
}
public String toString() {
return "Triunghi:Latura1: "+latura1+" Latura2: "+latura2+" Latura3: "+latura3;
}
}
class Observator {
private static Observator ourInstance = new Observator();
public static Observator getInstance() {
return ourInstance;
}
private Observator() {
}
private ArrayList<FiguraGeometrica>figuri=new ArrayList<>();
public void add(FiguraGeometrica figuraGeometrica){
figuri.add(figuraGeometrica);
}
public String toString(){
StringBuilder result=new StringBuilder();
int colectionSize=figuri.size();
for(int i=0;i<colectionSize;i++)
result.append(figuri.get(i).toString()).append("\n");
return result.toString();
}
public void anunta(){
System.out.println(figuri);
}
}
public class Main {
public static void main(String[] args) {
Observator observator=Observator.getInstance();
Cerc c1=new Cerc("Culoare1",1);
Patrat p1=new Patrat("Culoare2",2);
Triunghi t1=new Triunghi("Culoare3",3,4,5);
observator.add(c1);
observator.add(p1);
observator.add(t1);
c1.setCuloare("Culoare1");
}
}