02. august 2003 - 20:12Der er
21 kommentarer og 1 løsning
Bruge en metode på en klasse til en anden klasse til en anden
Jeg har et program der ser sådan ud: en klasse (person), der indeholder variablen (klassen Karaterblad) indde i klassen Katakterblad er der en funktion: tilføjKarakter(Karakter k); hvor Karakter er et ny klasse jeg har oprettet
Når jeg så har en person n, med et karakterblad kb, der skal tilføjes en karakter k Hvordan gøres dette så? Jeg har forsøgt mig med:
Person n = new Person(); System.out.println("2: "+klasseliste.get(2)); n = (Person) klasseliste.get(2); Karakter k = new Karakter6(); k.setKarakter("IT",10,"August","Klaus"); n.Karakterblad.tilføjKarakter(k); men man kan vist ikke sige: n.Karakterblad.tilføjKarakter(k); Så hvad gør jeg så?
Der kom vist lige et 6 tal for meget ind! Person n = new Person(); System.out.println("2: "+klasseliste.get(2)); n = (Person) klasseliste.get(2); Karakter k = new Karakter(); k.setKarakter("IT",10,"August","Klaus"); n.Karakterblad.tilføjKarakter(k);
Du kan lave en getmetode i person der returnerer karakterbladet og så tilføje derefter, du kan lave karakterblad public, protected eller "package scope" afhængig af forskellige ting, eller du kan lave en metode i person der sender dataene videre til karakterbladet
import java.util.*; public class klasse { public static void main (String args[]) { ArrayList klasseliste = new ArrayList(); for (int n=0 ; n<5 ; n++) { Person personen = new Person(); personen.setpostnummer(n); klasseliste.add(personen); } Person n = new Person(); System.out.println("2: "+klasseliste.get(2)); n = (Person) klasseliste.get(2); Karakter k = new Karakter(); k.setKarakter("IT",10,"August","Klaus"); n.Karakterblad.tilføjKarakter(k); } } ------ import java.util.*; public class Karakterblad { ArrayList karaktere = new ArrayList(); public void tilføjKarakter(Karakter k) { karaktere.add(k); } } ----- public class Karakter { String fag; int karakteren; String dato; String lærer;
public void setKarakter(String f, int k, String d, String l) { fag = f; k = karakteren; d = dato; l = lærer; } } --------
og set postnummer metoden kan fjernes, hvis klasserne ligger i samme pakke. Du bør overveje at isolere din datakerne og lave de nødvendige set/get metoder
For at få den ovenstående til at virke var jeg nød til at lave om i starten af Person klassen: Således at Karakterblad kaBlad om til: Karakterblad kaBlad = new Karakterblad(); ellers fik jeg en Null point exception ved runtime. og jeg kan vist ikke lave den om til en Private Karakterblad kaBlad = new Karakterblad(); ??
public class Main { public static void main(String[] args) { Student smartguy = new Student("Sam Smart", "Matematikvej 12345", 9999, "Universitetsbyen"); smartguy.addGrade(new Grade("Dansk", "Børge Grammaticus", new Date(), 10)); smartguy.addGrade(new Grade("Regning", "Ole Tal", new Date(), 11)); System.out.println(smartguy); Grade[] grades = smartguy.getAllGrades(); for(int i = 0; i < grades.length; i++) { System.out.println(grades[i]); } } }
class Student { private String name; private String address; private int zip; private String city; private GradeSheet grades; public Student(String name, String address, int zip, String city) { this.name = name; this.address = address; this.zip = zip; this.city = city; grades = new GradeSheet(); } public void move(String address, int zip, String city) { this.address = address; this.zip = zip; this.city = city; } public String toString() { return name + "," + address + "," + zip + " " + city; } public void addGrade(Grade grade) { grades.add(grade); } public Grade[] getAllGrades() { return grades.toArray(); } }
class GradeSheet { private List list; public GradeSheet() { list = new ArrayList(); } public void add(Grade grade) { list.add(grade); } public Grade[] toArray() { int n = list.size(); Grade[] res = new Grade[n]; for(int i = 0; i < n; i++) { res[i] = (Grade)list.get(i); } return res; } }
class Grade { private String course; private String teacher; private Date date; private int grade; public Grade(String course, String teacher, Date date, int grade) { this.course = course; this.teacher = teacher; this.date = date; this.grade = grade; } public String toString() { return "[" + course + "," + teacher + "," + date + "," + grade + "]"; } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.