Jag ska göra följande uppgift: I det här fallet behöver du inte skapa två filer, det räcker med 1 fil (Person.java) och testprogrammet kan du lägga i main satsen precis som du har gjort. Ungefär så här skulle Person.java kunna se ut (kommer inte skriva hela koden, lite får du göra själv ;-) ) Tusen tack för hjälpen! >Skulle det nu vara så att jag tvunget skulle vilja ha det i två filer så är det bara testkörningen som ska vara i den andra filen eller? Du ska tänka modulärt... jag får inte rätt på uppgiften ändå, den klagar på att jag börjar med private... Jag antar att du försöker komma åt variablerna direkt från main satsen? Det fungerar inte när en variabel eller en function för den delen är private, om du måste komma åt dom direkt byt ut private mot public. Nu har jag skrivit som koden nedan! Jag får felmeddelande på public static void main, den tycker inte om starten alltså public. Och att det någonstans behövs ; men det stämmer inte med den raden som står i kommandotolken. Sedan säger den att den saknar method body or declare abstract på raden Person(String namn, String personnummer, String adress, int alder); Här får du lite kod att utforska och bygga vidare på...klasser
Skriv en klass Person som innehåller följande instansvariabler, deklarera med passande datatyper:
namn, personnummer, adress, ålder.
I klassen ska följande metoder ingå:
§ konstruktorn Person, som initierar samtliga instansvariabler.
§ byterNamn, en metod som via parameter ändrar namnet.
§ byterAdress, en metod som via parameter ändrar adressen.
§ fyllerÅr, en metod som lägger till 1 till åldern.
§ hamtaNamn, en metod som returnerar namnet.
§ hamtaPersnr, en metod som returnerar personnumret.
§ hamtaÅlder, en metod som returnerar åldern.
§ hamtaAdress, en metod som returnerar adressen.
§ toString, en metod som i en snyggt formaterad sträng returnerar ett Person-objekts samtliga data. Metoden anropas genom att skriva objektets (referensens) namn.
Skriv ett testprogram som testar samtliga metoder i klassen Person. Programmet ska i tur och ordning utföra följande:
§ Skapa två Person-objekt, person1 och person2. Den som kör ditt program ska mata in startvärden till de båda objektens samtliga data (instansvariabler).
§ Skriv ut de båda objektens samtliga data.
§ Låt den som kör ditt program byta namn och adress på person1.
§ Låt person2 fylla år.
§ Skriv ut namnet, personnr och adressen på person1 (skriv alltså inte ut åldern).
§ Skriv ut namnet, personnr och åldern på person2 (skriv alltså inte ut adressen).
Jag vet hur man deklarerar variablerna, men min fråga är hur jag går till väga med en sådan här uppgift. Ska man göra två filer?? En som heter Person.java och en som heter t.ex. PersonTest.java?? Jag vet inte riktigt vad som ska skrivas var.
Jag vet inte om följande kod är på rätt väg...?
public class Labb2_8
{
public static void main(String[] args)
{
String namn = "Kalle Knopp",
personnummer = "7777777777", adress = "Kyrkogatan 6";
int age = 25;
Person P1 = new Person(namn, personnummer, adress, age);
}
}
Jag förstår att det är lite för mkt att svara på, men jag skulle bli jätteglad över bara en spark i rumpan åt rätt håll. Jag sitter nämligen helt fast på denna uppgift!!
/JennieSv: klasser
<code>
class Person
{
private String namn;
private String personnummer;
private String adress;
private int alder;
Person() { namn=""; personnummer=""; adress=""; alder=0; }
Person(String namn, String pnummer, String adress, int alder) { ... }
public void byterNamn(String nyttNamn) { ... }
public void byterAdress(String nyAdress) { ... }
public void fyllerAr() { .. }
public String hamtaNamn() { ... }
public String hamtaPersnr() { ... }
public String hamtaAdress() { ... }
public int hamtaAlder() { ... }
public String toString() { ... }
public static void main(String[] args)
{
// Här skriver du testprogrammet...
}
}
</code>
Skrev säkert lite för mycket nu :-(Sv: klasser
Skulle det nu vara så att jag tvunget skulle vilja ha det i två filer så är det bara testkörningen som ska vara i den andra filen eller?
När vet man om man ska använda 1 eller 2 filer??
/JennieSv: klasser
Om du måste ha två klasser (två filer) så ska bara testprogrammet ligga i den andra filen...
>När vet man om man ska använda 1 eller 2 filer??
I princip om man använder fler än en klass (en klass i varje fil, finns några undantag från det men det tar vi inte här), samt om en klass (fil) innehåller mer än 2000 rader så ska man försöka dela upp den... Sv: klasser
I ditt fall är din klass en person. Om det börjar dyka upp variabler i din klass som har med andra saker o göra, t.ex. en cykel, så kan man börja fundera på om man inte ska skapa en cykel klass...
Detta ska man definitivt göra då man ska kunna flytta en cykel från en person till en annan...
Det med 2000 rader vet jag inte om det är en bra tumstock o använda. Börja tänk modulärt istället och bryt upp det i bra storlekar. Det kommer av sig själv efter ett tag.
T.ex i ditt person fall. Det är ju ganska ofta man har med personer o göra i olika applikationer. Om du göra Personer.java på ett bra sätt kan du alltid utgå ifrån den senare i dina projekt/arbeten och på så vis spara mängder med tid och knapptryckningar :)Sv: klasser
private String _namn;
private String _adress;
private String _personnr;
private int _alder;
Varför tycker den inte om det???
/JennieSv: klasser
Dock så tycker jag du ska använda funktionerna hamtaNamn och byterNamn osv. för att komma åt variablerna. Sv: klasser
Hjälp hjälp hjälp =) Är det jag som är trög eller är det en svår uppgift??
import cs1.Keyboard;
class Person
{
private String namn;
private String personnummer;
private String adress;
private int alder;
Person() { namn=""; personnummer=""; adress=""; alder=0; }
Person(String namn, String personnummer, String adress, int alder);
public void byterNamn(String nyttNamn) { namn=nyttNamn; }
public void byterAdress(String nyAdress) { adress=nyAdress; }
public void fyllerAr() { alder++; }
//public String hamtaNamn() { ... } vad ska skrivas här??
//public String hamtaPersnr() { ... }
//public String hamtaAdress() { ... }
//public int hamtaAlder() { ... }
public String toString() { String info = new String();
info = "Namn=" + namn + " Adress=" + adress;
return info;
public static void main(String[] args)
{
System.out.println( "Mata in namn:" );
String namn = Keyboard.readString();
System.out.println( "Mata in adress:" );
String adress = Keyboard.readString();
System.out.println( "Mata in ålder:" );
Integer alder = new Integer(); alder.parseInt( Keyboard.readint() );
System.out.println( "Mata in personnummer:" );
String personnr = Keyboard.readString();
Person snubbe1 = new Person( namn, adress, alder, personnr );
// Skriv ut information om personen..
System.out.println( snubbe1.toString() );
// Modifiera personen lite
System.out.println( "Mata nytt namn för person1:" );
namn = Keyboard.readString();
snubbe1.byterNamn( namn );
snubbe1.fyllerAr();
// Skriv ut den nya information om personen..
System.out.println( snubbe1.toString() );
}
}
}
/JennieSv: klasser
<code>
public class Person
{
private String namn;
private String personnummer;
private String adress;
private int alder;
public Person(String _namn, String _pnummer, String _adress, int _alder)
{
namn = _namn;
personnummer = _pnummer;
adress = _adress;
alder = _alder;
}
public void byterNamn(String _namn)
{
namn = _namn;
}
public void byterAdress(String _adress)
{
adress = _adress;
}
public void fyllerAr()
{
alder = alder + 1;
}
public String hamtaNamn()
{
return namn;
}
public String hamtaPersnr()
{
return personnummer;
}
public String hamtaAdress()
{
return adress;
}
public int hamtaAlder()
{
return alder;
}
public String toString()
{
String _toString;
_toString = "Namn: " + namn + "\nÅlder: " + alder;
_toString = _toString + "\nPersonnummer: " + personnummer + "\nAdress: " + adress;
System.out.print(_toString);
return _toString;
}
public static void main(String[] args)
{
System.out.println("Mata in namn: ");
namn = Keyboard.readString();
osv...
Person person1 = new Person(namn, pnummer, adress, alder);
person1.toString();
}
}
</code>