Projekt do zrobienia (eclipse)

0

Witam, byłbym bardzo wdzięczny jeżeli ktoś by mógł pomóc/nakierować w stworzeniu tego projektu.
Z góry bardzo dziękuję za każdą pomoc

-Klasa punkt opisująca punkty dwuwymiarowe
-Abstrakcyjna klasa Figura, będąca bazą dla klas Linia, Prostokąt, Kwadrat, Kolo, Trojkat

  • Figura zawiera określoną liczbę wierzchołków(Punkt)oraz punkt zamocowania w układzie współrzędnych
  • Powinna zawierać odpowiednie abstrakcyjne metody
  • Linia, Prostokąt,Kolo, Trojkat dziedziczą z Figura
  • Kwadrat dziedziczy z Prostokata
    -Interfejs pozwalający na liczenie pola powierzchni i obwodu wszystkich figur, zaimplementowany w odpowiednich klasach
  • Interfejs pozwalający na wypełnienie figury kolorem określonym w standardzie RGB
    -Klasy powinny zawierać:
  • Odpowiednie pola i metody(enkapsulacja), między innymi potrzebne getery i setery
  • Konstruktory
    -Kod powinien zwierać odpowiednie komentarze
3

Mogę pomóc, ale oczekuję w zamian przynajmniej odpowiedzi na pytania:

  1. Co zrobiłeś w kierunku realizacji projektu?
  2. Jaki efekt chcesz uzyskać? Tzn. jaką masz wizję aplikacji.
0
Lubię Naleśniki z Dżemem napisał(a):

Mogę pomóc, ale oczekuję w zamian przynajmniej odpowiedzi na pytania:

  1. Co zrobiłeś w kierunku realizacji projektu?
  2. Jaki efekt chcesz uzyskać? Tzn. jaką masz wizję aplikacji.

Jestem kompletnie zielony w programowaniu w Javie (naprawdę bardzo początkujący, proszę o zrozumienie)

  1. Utworzyłem projekt, utworzyłem odpowiednie klasy, klasy abstrakcyjne oraz interfejsy, ustawiłem dziedziczenie z wymaganych klas,potrzebuję wytłumaczenia jak ugryźć to zadanie dalej.
  2. Moja wizja na aplikację jest taka: w klasie np. "main" będzie możliwe wywołanie takiego widoku:
    KWADRAT_____
    Pole kwadratu wynosi: xxx
    Obwód kwadratu wynosi:xxx
    KOŁO______
    Pole koła wynosi: xxxx
    Obwód kola wynosi: xxx
    itd.
    druga klasa umożliwiałaby wyświetlenie pokolorowanej figury w okienku aplikacji (tworzona metodą swing)
0

Stworzyłeś klasy? To pokaż je (pastebin, albo tutaj wklej w odpowiednie znaczniki), zwerfyikujemy co napisales. Potem Ci pomozemy wiecej ;)

0
kixe52 napisał(a):

Stworzyłeś klasy? To pokaż je (pastebin, albo tutaj wklej w odpowiednie znaczniki), zwerfyikujemy co napisales. Potem Ci pomozemy wiecej ;)

Figura.java

package zaliczeniepp;

import java.awt.Graphics;

public abstract class Figura implements Liczenie {
	public Figura() {
		
	}
public double Pole() {
	return 0;
}
public double Obwod() {
	return 0;
}
void rys(Graphics g) {};
}


Linia.java

package zaliczeniepp;

import java.awt.Color;
import java.awt.Graphics;

public class Linia extends Figura {
punkt punkt1, punkt2;


Linia (punkt p1, punkt p2){
	punkt1 = p1;
	punkt2 = p2;
}
public double pole() {
	return 0;
}
public double obwod() { 
	return (double)Math.sqrt(Math.pow(punkt1.x-punkt2.x, 2)+Math.pow(punkt1.y-punkt2.y, 2));
}
void rys (Graphics g, Color col) {
	g.setColor(col);
	g.drawLine(punkt1.x, punkt2.y, punkt2.x, punkt2.y);
}

}

Liczenie.java

package zaliczeniepp;

public interface Liczenie {
	
double pole();
double obwod();
}

punkt.java

package zaliczeniepp;

import java.awt.Color;
import java.awt.Graphics;

public class punkt {
protected int x;
protected int y;
public punkt (int x, int y) {
	this.x=x;
	this.y = y;
}
	public void wypiszWsp() {
		System.out.println("x = "+x);
		System.out.println("y = "+y);
		
	}
	public int getX() {
		return x;
	}
	public int getY() {
		return y;
	}
	void rysuj(Graphics g, Color col) {
		g.setColor(col);
		g.fillOval(x-1, y-1, 2, 2);
}
}

W sumie nic więcej konkretnego nie udało mi się urzeźbić, naprawdę nie wiem od czego zacząć :(

0
Polak napisał(a):
kixe52 napisał(a):

Stworzyłeś klasy? To pokaż je (pastebin, albo tutaj wklej w odpowiednie znaczniki), zwerfyikujemy co napisales. Potem Ci pomozemy wiecej ;)

Figura.java

package zaliczeniepp;

import java.awt.Graphics;

public abstract class Figura implements Liczenie {
	public Figura() {
		
	}
public double Pole() {
	return 0;
}
public double Obwod() {
	return 0;
}
void rys(Graphics g) {};
}


Linia.java

package zaliczeniepp;

import java.awt.Color;
import java.awt.Graphics;

public class Linia extends Figura {
punkt punkt1, punkt2;


Linia (punkt p1, punkt p2){
	punkt1 = p1;
	punkt2 = p2;
}
public double pole() {
	return 0;
}
public double obwod() { 
	return (double)Math.sqrt(Math.pow(punkt1.x-punkt2.x, 2)+Math.pow(punkt1.y-punkt2.y, 2));
}
void rys (Graphics g, Color col) {
	g.setColor(col);
	g.drawLine(punkt1.x, punkt2.y, punkt2.x, punkt2.y);
}

}

Liczenie.java

package zaliczeniepp;

public interface Liczenie {
	
double pole();
double obwod();
}

punkt.java

package zaliczeniepp;

import java.awt.Color;
import java.awt.Graphics;

public class punkt {
protected int x;
protected int y;
public punkt (int x, int y) {
	this.x=x;
	this.y = y;
}
	public void wypiszWsp() {
		System.out.println("x = "+x);
		System.out.println("y = "+y);
		
	}
	public int getX() {
		return x;
	}
	public int getY() {
		return y;
	}
	void rysuj(Graphics g, Color col) {
		g.setColor(col);
		g.fillOval(x-1, y-1, 2, 2);
}
}

W sumie nic więcej konkretnego nie udało mi się urzeźbić, naprawdę nie wiem od czego zacząć :(

Nie wiem do końca jak sprawić, aby w klasie MAIN wywoływały się pola i obwody tych figur, konsola kompilatora po prostu tam musi wyrzucic. No i w sumie mam problem jak dobrze punkty ustawic dla kazdej figury, aby dobrze liczyly sie pola i obwody

1
  1. Przeczytaj komentarz @AnyKtokolwiek i zmień to z implements liczenie
  2. Nie wiem do końca jak sprawić, aby w klasie MAIN wywoływały się pola i obwody tych figur

Tworzysz nowy obiekt za pomocą napisanego przez CIebie konstruktora. Na tym obiekcie możesz wywołać metody, które będą do niego "przydzielone".

0
kixe52 napisał(a):
  1. Przeczytaj komentarz @AnyKtokolwiek i zmień to z implements liczenie
  2. Nie wiem do końca jak sprawić, aby w klasie MAIN wywoływały się pola i obwody tych figur

Tworzysz nowy obiekt za pomocą napisanego przez CIebie konstruktora. Na tym obiekcie możesz wywołać metody, które będą do niego "przydzielone".

Mógłbym poprosić o kawałek kodu dla wyjaśnienia?
Przepraszam za takie banalne pytania

1
public abstract class Figura {

	public abstract double pole();

	public abstract double obwod();
}
public class Prostokat extends Figura{

	private Punkt firstPoint;
	private Punkt secondPoint;
	private Punkt thirdPoint;
	private Punkt fourthPoint;
	
	public Punkt getFirstPoint() {
		return firstPoint;
	}

	public void setFirstPoint(Punkt firstPoint) {
		this.firstPoint = firstPoint;
	}

	public Punkt getSecondPoint() {
		return secondPoint;
	}

	public void setSecondPoint(Punkt secondPoint) {
		this.secondPoint = secondPoint;
	}

	public Punkt getThirdPoint() {
		return thirdPoint;
	}

	public void setThirdPoint(Punkt thirdPoint) {
		this.thirdPoint = thirdPoint;
	}

	public Punkt getFourthPoint() {
		return fourthPoint;
	}

	public void setFourthPoint(Punkt fourthPoint) {
		this.fourthPoint = fourthPoint;
	}

	
	public Prostokat(Punkt firstPoint, Punkt secondPoint, Punkt thirdPoint, Punkt fourthPoint) {
		this.firstPoint = firstPoint;
		this.secondPoint = secondPoint;
		this.thirdPoint = thirdPoint;
		this.fourthPoint = fourthPoint;
	}

	@Override
	public double pole() {
		// tutaj możesz wykorzystać swoja klase linia, w ktorej definiujesz metode "dlugosc" (wzor matematyczny na odleglosc dwoch punktow)
		// majac dlugosc dwohc roznych linii, wymnazasz je przez siebie
		return 0;
	}

	@Override
	public double obwod() {
		// analogicznie jak wyzej, ale sumujesz wyniki
		return 0;
	}

}
public class FigurySpr {

	public static void main(String[] args) {

		Punkt firstP = new Punkt(0, 0);
		Punkt secondP = new Punkt(7, 0);
		Punkt thirdP = new Punkt(7, 4);
		Punkt fourthP = new Punkt(0, 4);

		Figura prostokat = new Prostokat(firstP, secondP, thirdP, fourthP);
		System.out.println(prostokat.pole());
		System.out.println(prostokat.obwod());
	}

}

Jeśli nie masz tego na jutro to bym dopytał prowadzącego, co z tą linią. Bo jeśli metody pole i obwód mają być abstrakcyjne, to trochę dziwnie wygląda, że w przestrzeni euklidesowej linia ma pole i obwód (nawet jeśli ma to wynosić 0).

Pamiętaj o hermetyzacji.
W klasie punkt zamiast meotdy wypiszWsp nadpisz metodę toString()

Resztę kodu zostawiam Tobie do zrobienia. Bez pisania samemu, za dużo się nie nauczysz.

edit: ogólnie zacząłem mieszać polski z angielskim (firstPoint itp) bo to z przyzwyczajenia. Ty trzymaj się jednej konwencji, albo pl albo eng. Najlepiej tje drugiej ;)

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