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.
  2. 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, botów: 0