Priraďovanie údajov z jednej triedy prvkom v inej triede – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Priraďovanie údajov z jednej triedy prvkom v inej triede – Java – Fórum – Programujte.comPriraďovanie údajov z jednej triedy prvkom v inej triede – Java – Fórum – Programujte.com

 

marek
~ Anonymní uživatel
521 příspěvků
1. 11. 2012   #1
-
0
-

dobrý deň

chcem urobiť program, ktorý bude "databázou" žiakov v triede. mám vytvorenú triedu v ktorej môžete žiaka pridať, zmazať, zobraziť jeho meno podľa indexu, zobraziť všetkých a zobraziť počet žiakov. potom by mala existovať druhá trieda, cez ktorú budem jednotlivým žiakom priraďovať nejaké údaje, napr. prospech, počet vymeškaých hodín a pod.

prvá zo spomínaných tried vyzerá takto:

import java.util.ArrayList;
public class Databaza
{
    private ArrayList<String> aPoznamky;
    private int paPoradoveCislo;
    private int paIndex;
    public Databaza()
    {
        aPoznamky=new ArrayList<String>();
    }
    public void pridajZiaka(String paZaznam)
    {
        aPoznamky.add(paZaznam);
    }
    public void zobrazZiaka(int paPoradoveCislo)
    {
        if((paPoradoveCislo>=0)
            &&(paPoradoveCislo<dajPocetZiakov()))
            {
                System.out.println(aPoznamky.get(paPoradoveCislo));
            }
    }
    public int dajPocetZiakov()
    {
        return aPoznamky.size();
    }
    public void zmazZiaka(int paPoradoveCislo)
    {
        if((paPoradoveCislo>=0)
            &&(paPoradoveCislo<dajPocetZiakov()))
            {
                aPoznamky.remove(paPoradoveCislo);
            }
    }
    public void zobrazVsetkych()
    {
            System.out.println(aPoznamky);
    }
}

táto trieda funguje bezchybne. tá druhá trieda by mala robiť to, že do nej zadám údaje a tie sa pripíšu k danému žiakovi (s daným indexom). systém, ako si ho predstavujem ja, je meno - datum - predmet - znamka, napr. jozko mrkvicka - 29/2/2012 - dejepis - 5.

poradí mi niekto ako na to?

každá pomoc vítaná.

marek

Nahlásit jako SPAM
IP: 158.193.83.–
Buco0
Newbie
1. 11. 2012   #2
-
0
-

#1 marek
Moj postup by bol takyto:

Vytvorit triedu Ziak, ktora bude mat atributy napr. Index, Meno, Priezvisko, Predmety. Atribut Predmety moze byt kolekcia SortedSet (odtranuje duplicity a udrziava vzostupne poradie). Potom konstruktor na vytvorenie ziakov a metody na pridanie/odstraneni predmetu k danemu ziakovi. Potom triedu Predmet s atributmi Nazov, Hodnotenie, ktore by bolo kolekciou triedy Znamka s atributmi Hodnota (1 - 5) a datum. Ku kazdej triede prekryt metodu toString pre spravne vypisanie atributov danej triedy.

Vytvorit triedu Trieda pre ziakov jednej triedy a v nej konstruktor, ktory by vytvoril znova kolekciu SortedSet a ta by uchovavala objekty Ziak danej Triedy. Metody na pridanie/odstranenie ziakov a tiez toString na vypis.

V main class potom len vytvoris objekty Trieda a do ktorych pridavas ziakov, k nim predmety a k predmetom znamky.

Da sa s tym pohrat, podla toho co ocakavas od toho programu. Len vypisy ziakov a ich znamok alebo aj nejake operacie ako vyhodnotenie ziakov danej triedy podla konkretne predmetu, vyhodnotenie triedy celkovo, urcenie najlepsieho ziaka v triede alebo zo vsetkych tried, urcit priemer na ziaka/ na predmet.

Nahlásit jako SPAM
IP: 195.178.73.–
marek
~ Anonymní uživatel
521 příspěvků
1. 11. 2012   #3
-
0
-

Vďaka za tip. Čo sa týka SortedSet-ov tak v tom sa moc nevyznám. Mohol by si mi prosím ukázať ako by vyzeral napr. pre atribút Predmety v triede Ziak? Díky moc.

Nahlásit jako SPAM
IP: 158.193.83.–
Buco0
Newbie
1. 11. 2012   #4
-
0
-

Odporucam ti precitat nejaky tutorial o kolekciach, napr. http://www.linuxsoft.cz/article.php?… a http://www.linuxsoft.cz/article.php?…

Takto nejak by som riesil ja:

import java.util.SortedSet;
import java.util.TreeSet;


public class Ziak {
	private int index;
	private String meno;
	private String priezvisko;
	private SortedSet<Predmet> predmety = new TreeSet<Predmet>();
	
	public Ziak(int index, String meno, String priezvisko) {
		this.index = index;
		this.meno = meno;
		this.priezvisko = priezvisko;		
	}
	
	public boolean pridajPredmet(Predmet predmet) {
		//Vlozi predmet, vracia true ak ho kolekcia predmety este neobsahuje
		return this.predmety.add(predmet);
	}
	
	public String toString()	{
		return this.index+". "+this.meno+" "+this.priezvisko+" "+this.predmety;
	}
	
	public static void main(String[] args) {
		Ziak prvy = new Ziak(1, "Jano", "Maly");
		prvy.pridajPredmet(new Predmet("Programovanie v jazyku Java"));		
	}

}

Pricom trieda Predmet by vyzerala takto nejak:

public class Predmet {
	private String nazov;
	
	public Predmet(String s) {
		this.nazov = s;
	}
	
	public String toString() {
		return nazov;
	}

}
Nahlásit jako SPAM
IP: 195.178.73.–
marek
~ Anonymní uživatel
521 příspěvků
1. 11. 2012   #5
-
0
-

#4 Buco
Trocha nerozumiem metóde pridajPredmet a void main. Metóda pridajPredmet nevracia true ani false, a keď spustím void main (String[]args) vypíše "Predmet cannot be cast to java.lang.Comparable (in java.util.TreeMap)". Ale vďaka že si mi to trocha ozrejmil. Kuknem sa na tie tutoriály...

Nahlásit jako SPAM
IP: 158.193.83.–
Buco0
Newbie
1. 11. 2012   #6
-
0
-

Vyraz this.predmety.add(predmet) vracia true ak sa podari vlozit dany predmet do kolekcie predmety, vracia false ak uz kolekcia predmety dany predmet obsahuje (jeden ziak nemoze studovat dany predmet 2x). Pre lepsie pochopenie pozri rozhranie TreeSet v http://docs.oracle.com/…/6/docs/api/

Chybu ti to hadze asi preto, ze si neimportol rozhranie TreeSet ale TreeMap. Mne ta main metoda funguje.

https://www.dropbox.com/…A01%3A58.png

Nahlásit jako SPAM
IP: 195.178.73.–
marek
~ Anonymní uživatel
521 příspěvků
2. 11. 2012   #7
-
0
-

#6 Buco
Ja mám rovnaký zdroják ako ty a aj tak mi to hádže error.

import java.util.SortedSet;
import java.util.TreeSet;

public class Ziak {
    private int index;
    private String meno;
    private String priezvisko;
    private SortedSet<Predmet> predmety = new TreeSet<Predmet>();
    
    public Ziak(int index, String meno, String priezvisko) {
        this.index = index;
        this.meno = meno;
        this.priezvisko = priezvisko;       
    }
    
    public boolean pridajPredmet(Predmet predmet) {       
        //Vlozi predmet, vracia true ak ho kolekcia predmety este neobsahuje
        return this.predmety.add(predmet);
    }
    
    public String toString()    {
        return this.index+". "+this.meno+" "+this.priezvisko+" "+this.predmety;
    }
    
    public static void main(String[] args) {
        Ziak prvy = new Ziak(1, "Jano", "Maly");
        prvy.pridajPredmet(new Predmet("Programovanie v jazyku Java"));
        System.out.println(prvy.toString());
    }
}

Nemôže byť chyba v kompilátore?? (používam BlueJ)

Nahlásit jako SPAM
IP: 158.193.83.–
Buco0
Newbie
2. 11. 2012   #8
-
0
-

Mal by si implementovat rozhranie Comparable. Sice pouzivam Eclipse, ale aj tak nechapem preco to mne ide a tebe nie. TreeSet a TreeMap vyzaduju implementovanie rozhrania Comparable aby mohli porovnat pridavane objekty usporiadat. Toto by ti mohlo pomoct: http://docs.oracle.com/…s/order.html

Nahlásit jako SPAM
IP: 195.178.73.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 33 hostů

Podobná vlákna

TextBox v inej triede — založil Tayson

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý