Proste zadanie z klasą abstrakcyjną

0

Cześć Koledzy,
mam takie zadanie:

Klasa abstrakcyjna.
Utworzyć klasę abstrakcyjną AFigura zawierającą:

  1. pole String nazwa
  2. konstruktor bezargumentowy wypisujący nazwę
  3. konstruktor z arg. nazwa, przypisujący arg. do pola
  4. metody abstrakcyjne double pole(), double obwód()
  5. metodę String toString() - z info o obiekcie (nieobowiązkowo)
    Utworzyć klasy pochodne Koło i Prostokąt dziedziczące z klasy AFigura
    Utworzyć obiekt kalsy AFigura. Utworzyć tablicę AFigur (4 Prostokąty 2 Koła) policzyć ich sumę pól.

Mój main:

public class Pierwsza 
{
	public static void main(String[] args) 
	{
		Prostokat prostokat1 = new Prostokat(3, 5);       
    }
}

Klasa abstrakcyjna AFigura:

public abstract class AFigura 
{
	String nazwa;
	
	AFigura()
	{
		wypiszNazwe();
	}

	AFigura(String nazwa)
	{
		this.nazwa = nazwa;
		wypiszNazwe();
	}
		
	public String wypiszNazwe()
	{
		return nazwa;
	}
	
	public abstract double pole();

	public abstract double obwod();
	
	public String toString()
	{
		return nazwa;		
	}	
}

Klasa pochodna Prostokat:

public class Prostokat extends AFigura
{
	int aBok = 0;
	int bBok = 0;
	
	Prostokat (int a, int b)
	{
		aBok = a;
		bBok = b;
	}
	
	public double pole()
	{
		return aBok * bBok;		
	}

	public double obwod()
	{
		return (2*aBok) + (2*bBok);			
	}	
}

Klasa pochodna Kolo:

public class Kolo extends AFigura
{
	int promien = 0;
	
	public double pole()
	{
		return 2 * Math.PI * promien;
	}
	
	public double obwod()
	{
		return Math.PI * promien;
	}
}

Nie wiem czy wszystko dobrze robię... nie wiem jak zrobić tą tabilice figur co jest w zadaniu... help me :-)
Rzućcie okiem co tu jest źle, wszystkie uwagi mile widziane!

Pzdr.

0
  1. Twój konstruktor bezparametrowy w klasie AFigura nawet nie próbuje wypisać nazwy.
AFigura[] figury = new AFigura[6];
for(int i=0;i<4;i++)
{
    figury[i] = new Prostokat(...);
}
for(int i=4;i<5;i++)
{
    figury[i] = new Kolo(...);
}
0

To od szpunara może zadanie ?:D

0

A jeśli chodzi o liczenie pól, zrobił bym w klasie abstrakcyjnej metode obliczPole. Następnie w każdej klasie koło i prostokąt przedefiniować metode obliczPole odpowiednio żeby metoda zwracała pole figury. I na sam koniec pętlą przejechać po liście figur. Jeśli się mylę proszę o naprowadzenie, bo też się uczę :)

0

"konstruktor bezargumentowy wypisujący nazwę"- co to znaczy? Chodzi o to żeby program sam nadawał nazwę jeżeli programista się nie pofatyguje? Czy ma jeszcze wyświetlać tę nazwę?
Sprawdź sobie jeszcze raz wzory na pole i obwód koła :)
Nie utworzysz obiektu klasy abstrakcyjnej takiej jak AFigura. Zapewne w zadaniu chodzi o polimorfizm, np:

AFigura fig = new Prostokat(10, 5);

Można analogicznie użyć tablicy typu AFigura. Dodaj sobie zmienną "pole" w nadklasie i do niego przekazuj wartość z metody pole. W innym wypadku będziesz musiał ręcznie rzutować obiekty przechowywane w tablicy aby tę wartość wyciągnąć (wszak w obecnej formie klasa AFigura nie wie nic o żadnym polu jakiejkolwiek figury).

1 użytkowników online, w tym zalogowanych: 0, gości: 1