Elg_ Skrevet 23. november 2007 Skrevet 23. november 2007 (endret) Du skal skrive en klasse som kan brukes til å lagre opplysninger om en person. Klassen skal ha følgende medlemsdata: id – et heltall som entydig identifiserer personen navn – personens navn fodselsaar – året når personen er født (et heltall) farId – id til personens far (0 hvis far ikke er registrert) morId - id til personens mor (0 hvis mor ikke er registrert) og medlemsfunksjoner: - en kontruktør som setter alle datamedlemmer til ønskede verdier - en funksjon som returnerer id til personen - en funksjon som returnerer navn til personen - medlemsfunksjoner for å sette / og for å returnere id til mor - medlemsfunksjoner for å sette / og for å returnere id til far - en medlemsfunksjon som returnerer alderen til en person, gitt hvilket år det er nå (aktuelt år er innparameter til funksjonen) a) Skriv en fullstendig definisjon av denne klassen, alle medlemsfunksjoner skal være implementert. Skriv også et testprogram for å prøve ut alle metodene. b) Tenk deg at det finnes en annen klasse med navn Slekt definert som følger: public class Slekt { public Slekt() {antall = 0;} public int getMor(int id){// kode}; public int getFar(int id) {// kode}; public void finnBarn(int f_id, int m_id) {// kode}; public boolean nyPerson() {// kode}; private int antall; // antall personer i tabellen pers // + en tabell eller annet som kan holde rede på 100 pesoner (*) } (*) Datastrukturen som holder 100 personer kan du bestemme typen på selv, f.eks en tabell eller en ArrayList. Skriv medlemsfunksjonen nyPerson() som skal be om data om en person, lage et person objekt og sette det inn i den valgte datastrukturen som holder rede på inntil 100 personer. Utvid testprogrammet til å prøve ut også denne funksjonen. c) Skriv medlemsfunksjonen getMor() og getFar() som returnerer navn for henholdsvis mor og far for et barn som er gitt inn som parameter. Utvid testprogrammet til å prøve ut også denne funksjonen. d) Skriv funksjonen finnBarn() som lister ut (på skjermen) id, navn og fødselsår til alle personer som er barn av de to personene som er gitt inn som inn-parametre. Utvid testprogrammet til å prøve ut også denne funksjonen. Hilsen elgen Endret 26. november 2007 av Elg_
Ainemorko Skrevet 23. november 2007 Skrevet 23. november 2007 Jeg anbefaler deg å prøve først, dette er en øving du skal gjøre for å lære objektorientering, er egentlig _veldig_ simpel. Hint, slik er et object bygd opp: public class Klassenavn{ variabel1 variabel2 variabel3 public Klassenavn(parameterliste){ //dette er en konstruktør } public datatype getVariabelnavn(){ //her henter man en variabel return variabelnavn; } public void setVariabelnavn(parameter){ //her setter man en variabel variabel1 = parameter; }
Ueland Skrevet 23. november 2007 Skrevet 23. november 2007 Hvis du legger ut koden du har gjort her er det litt lettere for oss å poengtere hva som eventuelt er feil,og hvorfor. At noen her skriver hele koden vil neppe hjelpe for mye.
Elg_ Skrevet 23. november 2007 Forfatter Skrevet 23. november 2007 Jeg anbefaler deg å prøve først, dette er en øving du skal gjøre for å lære objektorientering, er egentlig _veldig_ simpel. Hint, slik er et object bygd opp: public class Klassenavn{ variabel1 variabel2 variabel3 public Klassenavn(parameterliste){ //dette er en konstruktør } public datatype getVariabelnavn(){ //her henter man en variabel return variabelnavn; } public void setVariabelnavn(parameter){ //her setter man en variabel variabel1 = parameter; } her er det jeg gjorde så langt public class Person(){ private int Id; private String navn; private int fodselsaar; private int farId; private int morId; public Person( int startId, String startNavn, int startFodselsaar, int farId, int morId){ int id = startId; String navn = startNavn; int fodselsaar= startfodselsaar; int farId = 0; int morId = 0; public int finnId(){ return Id; } public String finnNavn(){ return navn; } public int finnFodselsaar(){ return Id; } public int finnFarid(){ return farId; } public int finnMorid(){ return morId; }
SuppeMannen Skrevet 23. november 2007 Skrevet 23. november 2007 Da er du godt på vei husk at du må lage settere til farId og morId public void settFarId(int id){ this.farId= id; } I tillegg, hvis jeg har forstått oppgaven riktig så skal farId og morId kun settes til 0 i konstruktøren dersom denne personen ikke har en mor eller far. Rett opp dette også kan du starte på neste oppgave
Elg_ Skrevet 23. november 2007 Forfatter Skrevet 23. november 2007 Da er du godt på vei husk at du må lage settere til farId og morId public void settFarId(int id){ this.farId= id; } I tillegg, hvis jeg har forstått oppgaven riktig så skal farId og morId kun settes til 0 i konstruktøren dersom denne personen ikke har en mor eller far. Rett opp dette også kan du starte på neste oppgave her svaret så langt!! se vedlegg personklasse.txt
SuppeMannen Skrevet 23. november 2007 Skrevet 23. november 2007 (endret) Det ble bedre. men konstruktøren din er ikke helt god. I konstruktøren skal du angi verdier til datafeltene dine. Du kan derfor ikke sette datatyper forran variabelnavnet, da vil du opprette en ny variabel lokalt i konstruktøren. For å sette verdier til datafeltene dine bruker du this. da er du sikker på at du peker på datafeltene i objektet og ikke de lokale i konstruktøren/metoden din. konstruktøren skal noe ala slik ut: public Person( int startId, String startNavn, int startFodselsaar, int farId, int morId){ this.id = startId; this.navn = startNavn; this.fodselsaar= startFodselsaar; this.farId = farId; this.morId = morId; } PS Dette ble kanskje litt knotete forklart, håper jeg har gjort meg forstått. Edit: Lite spørsmål. Hvilken editor bruker du? Ut i fra syntax så ser det ut som at du bruker notepad. Bruk en editor hvor du får highlightet syntax og som finner feil ettersom du skriver dem. Personlig bruker jeg eclipse og er veldig fornøyd med det Endret 23. november 2007 av SuppeMannen
Elg_ Skrevet 23. november 2007 Forfatter Skrevet 23. november 2007 Det ble bedre. men konstruktøren din er ikke helt god. I konstruktøren skal du angi verdier til datafeltene dine. Du kan derfor ikke sette datatyper forran variabelnavnet, da vil du opprette en ny variabel lokalt i konstruktøren. For å sette verdier til datafeltene dine bruker du this. da er du sikker på at du peker på datafeltene i objektet og ikke de lokale i konstruktøren/metoden din. konstruktøren skal noe ala slik ut: public Person( int startId, String startNavn, int startFodselsaar, int farId, int morId){ this.id = startId; this.navn = startNavn; this.fodselsaar= startFodselsaar; this.farId = farId; this.morId = morId; } PS Dette ble kanskje litt knotete forklart, håper jeg har gjort meg forstått. Edit: Lite spørsmål. Hvilken editor bruker du? Ut i fra syntax så ser det ut som at du bruker notepad. Bruk en editor hvor du får highlightet syntax og som finner feil ettersom du skriver dem. Personlig bruker jeg eclipse og er veldig fornøyd med det men så var det der med å lage testprogrammet til oppgave a)?!! import javax.swing.JOptionPane; class Persontest { public static void main(String[] args) { Person fornavnPerson = new Person er jeg på riktig spor eller, har du noen tips der er fersk på området vet du ... Det ble bedre. men konstruktøren din er ikke helt god. I konstruktøren skal du angi verdier til datafeltene dine. Du kan derfor ikke sette datatyper forran variabelnavnet, da vil du opprette en ny variabel lokalt i konstruktøren. For å sette verdier til datafeltene dine bruker du this. da er du sikker på at du peker på datafeltene i objektet og ikke de lokale i konstruktøren/metoden din. konstruktøren skal noe ala slik ut: public Person( int startId, String startNavn, int startFodselsaar, int farId, int morId){ this.id = startId; this.navn = startNavn; this.fodselsaar= startFodselsaar; this.farId = farId; this.morId = morId; } PS Dette ble kanskje litt knotete forklart, håper jeg har gjort meg forstått. Edit: Lite spørsmål. Hvilken editor bruker du? Ut i fra syntax så ser det ut som at du bruker notepad. Bruk en editor hvor du får highlightet syntax og som finner feil ettersom du skriver dem. Personlig bruker jeg eclipse og er veldig fornøyd med det jeg bruker notisblokk
SuppeMannen Skrevet 23. november 2007 Skrevet 23. november 2007 Hvis du bruker notisblokk så bør du legge inn eclipse med en gang. Det kommer til å gjøre alt MYE enklere. eclipse kan du laste ned her http://www.eclipse.org/downloads/download....p;mirror_id=303 import javax.swing.JOptionPane; class Persontest { public static void main(String[] args) { Person fornavnPerson = new Person her er du på rett vei Husk at du må angi parametre til konstruktøren når du oppretter Person objektet. De kan du skaffe med å bruke JOptionPane
emva Skrevet 23. november 2007 Skrevet 23. november 2007 Hvis du bruker notisblokk så bør du legge inn eclipse med en gang. Det kommer til å gjøre alt MYE enklere. Eclipse vil jeg ikke ambefale til en som akkuratt har begynt med programering, prøv heller BlueJ. Den viser objekter og relasjoner på en bedre måte enn eclipse (som faktisk ikke viser det i det hele tatt)
Elg_ Skrevet 23. november 2007 Forfatter Skrevet 23. november 2007 Hvis du bruker notisblokk så bør du legge inn eclipse med en gang. Det kommer til å gjøre alt MYE enklere. Eclipse vil jeg ikke ambefale til en som akkuratt har begynt med programering, prøv heller BlueJ. Den viser objekter og relasjoner på en bedre måte enn eclipse (som faktisk ikke viser det i det hele tatt) Jeg har bluej installert på maskinen...
FourEyes Skrevet 24. november 2007 Skrevet 24. november 2007 Hvis du bruker notisblokk så bør du legge inn eclipse med en gang. Det kommer til å gjøre alt MYE enklere. Eclipse vil jeg ikke ambefale til en som akkuratt har begynt med programering, prøv heller BlueJ. Den viser objekter og relasjoner på en bedre måte enn eclipse (som faktisk ikke viser det i det hele tatt) Synes egentlig ikke BlueJ er så veldig bra heller, siden man kan drive å opprette objekter uten å lage et programm for dette. Hadde flere personer i klassen som spurte "Men hvor ble objektet av nå?" når vi brukte kommando vinduet til å lage et objekt siden det ikke kom noen rød boks opp. Synes egentlig at Notepad++ er det som fungerte best når man er nybegynner, men er enig i at eclipse ikke burde brukes i starten, siden det er veldig overveldene med beskjeder om allt mulig hele tiden.
Elg_ Skrevet 25. november 2007 Forfatter Skrevet 25. november 2007 fikk kompilert det første oppgave under a, men trenger litt hjelp med fortsettelsen av testprogrammet public class Person { private int Id; private String navn; private int fodselsaar; private int farId; private int morId; public Person( int startId, String startNavn, int startFodselsaar, int farId, int morId){ int id = startId; String navn = startNavn; int fodselsaar= startFodselsaar; } public int finnId(){ return Id; } public String finnNavn(){ return navn; } public int finnFodselsaar(){ return fodselsaar; } public void settFarid(){ this.farId=Id; } public void settMorid(){ this.morId= Id; } public int finnFarid(){ return farId; } public int finnMorid(){ return morId; } } import javax.swing.JOptionPane; class Persontest { public static void main(String[] args) { Person fornavnPerson = new Person her trenger jeg hjelp med fortsettelsen...........
pgdx Skrevet 25. november 2007 Skrevet 25. november 2007 import javax.swing.JOptionPane; class Persontest { public static void main(String[] args) { Person fornavnPerson = new Person her trenger jeg hjelp med fortsettelsen........... Med hva?
Elg_ Skrevet 25. november 2007 Forfatter Skrevet 25. november 2007 import javax.swing.JOptionPane; class Persontest { public static void main(String[] args) { Person fornavnPerson = new Person her trenger jeg hjelp med fortsettelsen........... Med hva? med å lage et testprogram for klassen person
pgdx Skrevet 25. november 2007 Skrevet 25. november 2007 public class Person implements Comparable<Person> { private int id; private String name; private int birthYear; private int fatherId; private int motherId; public Person(int id, String name, int birthYear, int fatherId, int motherId) { this.id = id; this.name = name; this.birthYear = birthYear; this.fatherId = fatherId; this.motherId = motherId; } public int getBirthYear() { return birthYear; } public void setBirthYear(int birthYear) { this.birthYear = birthYear; } public int getFatherId() { return fatherId; } public void setFatherId(int fatherId) { this.fatherId = fatherId; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getMotherId() { return motherId; } public void setMotherId(int motherId) { this.motherId = motherId; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Person)) return false; final Person p = (Person) obj; if (getId() != p.getId()) return false; if (!getName().equals(p.getName())) return false; return true; } @Override public int hashCode() { return id * 31; } public int compareTo(Person o) { return getId() - o.getId(); } @Override public String toString() { return name + " (" + birthYear + ")"; } } import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class PersonRegister implements Collection<Person> { private List<Person> persons; public PersonRegister() { this.persons = new ArrayList<Person>(); } public PersonRegister(int size) { this.persons = new ArrayList<Person>(size); } public boolean add(Person e) { return persons.add(e); } public boolean addAll(Collection<? extends Person> c) { return persons.addAll©; } public void clear() { persons.clear(); } public boolean contains(Object o) { return persons.contains(o); } public boolean containsAll(Collection<?> c) { return persons.containsAll©; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof PersonRegister)) return false; final PersonRegister p = (PersonRegister) obj; if (size() != p.size()) return false; if (!persons.equals(p.persons)) return false; return true; } @Override public int hashCode() { return persons.hashCode(); } public boolean isEmpty() { return persons.isEmpty(); } public Iterator<Person> iterator() { return persons.iterator(); } public boolean remove(Object o) { return persons.remove(o); } public boolean removeAll(Collection<?> c) { return persons.removeAll©; } public boolean retainAll(Collection<?> c) { return persons.retainAll©; } public int size() { return persons.size(); } public Object[] toArray() { return persons.toArray(); } public <T> T[] toArray(T[] a) { return persons.toArray(a); } @Override public String toString() { return size() + "\tpersons:\t" + persons.toString(); } } import java.awt.List; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class PersonTest extends JPanel { private static final long serialVersionUID = 1L; private List personList; private JTextField personNameField; private JTextField personIdField; private JTextField personFatherIdField; private JTextField personMotherIdField; private JTextField personBirthYearField; private JButton addButton; private PersonRegister personRegister; public PersonTest() { this.personRegister = new PersonRegister(); this.personList = new List(); this.personNameField = new JTextField(30); this.personIdField = new JTextField(30); this.personFatherIdField = new JTextField(30); this.personMotherIdField = new JTextField(30); this.personBirthYearField = new JTextField(30); this.addButton = new JButton("Add"); addButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { personRegister.add(new Person(Integer.parseInt(personIdField .getText()), personNameField.getText(), Integer .parseInt(personBirthYearField.getText()), Integer .parseInt(personFatherIdField.getText()), Integer .parseInt(personMotherIdField.getText()))); fireDataChanged(); } }); add(personNameField); add(personBirthYearField); add(personIdField); add(personFatherIdField); add(personMotherIdField); add(addButton); add(personList); } public void fireDataChanged() { personList.clear(); for (Person p : personRegister) { personList.addItem(p.toString()); } } public static void main(String[] args) { JFrame f = new JFrame("Personregister"); f.add(new PersonTest()); f.pack(); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
Jørgen Sørheim Skrevet 25. november 2007 Skrevet 25. november 2007 Emnetittelen i denne tråden er lite beskrivende for trådens innhold og det er derfor ingen god emnetittel. Jo bedre og mer beskrivende emnetittelen er, jo lettere er det for andre å skjønne trådens innhold og det vil være lettere å treffe den riktige forumbrukeren med det rette svaret. Ber deg derfor om å endre emnetittel slik at du unngår at en moderator stenger tråden. Vennligst forsøk å tenk på dette neste gang du starter en tråd, og orienter deg om hva vår nettikette sier om dårlig bruk av emnetitler. Bruk -knappen i første post for å endre emnetittelen. Tråden bryter også med tre-ords-regelen. (Dette innlegget vil bli fjernet ved endring av emnetittel. Ikke kommenter dette innlegget, men ta gjerne og dette innlegget når tittelen er endret, så vil det bli fjernet.)
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå