Gå til innhold

person klasse i java


Anbefalte innlegg

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 av Elg_
Lenke til kommentar
Videoannonse
Annonse

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;

}

Lenke til kommentar
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;

}

Lenke til kommentar

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 :)

Lenke til kommentar
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

Lenke til kommentar

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 av SuppeMannen
Lenke til kommentar
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

Lenke til kommentar

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

Lenke til kommentar
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)

Lenke til kommentar
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...

Lenke til kommentar
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.

Lenke til kommentar

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...........

Lenke til kommentar

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);
}
}

Lenke til kommentar

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 p_edit.gif-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 p_report.gif dette innlegget når tittelen er endret, så vil det bli fjernet.)

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...