lizza-krissa Skrevet 25. april 2007 Del Skrevet 25. april 2007 Jeg skal lage en abstract klasse som skal retunere en bestemt verdi om noen ting. F. eks så har jeg to dyr som er truet. Jeg må lege en abstrakt metode for å hente ut hvor truet de dyrene er. Jeg har flere typer dyr også, men de to dyrene her er like truet. Jeg vet ikke helt hvordan jeg skal angripe dette... Forløplig har jeg gjort slik, men jeg vet ikke om jeg har angrepet det riktig. public abstract class Endangered extends ZooAnimal { private String panda; private String kenguru; { System.out.print("Panda er EN - endangered: " + panda + " (" + kenguru + " mins)"); } } Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Hvorfor er "Endangered" klassen abstrakt og hvorfor arver den fra ZooAnimal? Hvilken subklasser tenkte du at denne skulle ha? + Det er ingen logisk arv fra ZooAnimal til Endangered, er du ikke enig? ZooAnimal bør isåfall ha et atributt som het endangered.. Uansett, her er eksempel på bruk av abstrakt klasse: public abstract class Animal { protected String name; public String getName() { return name; } public abstract String getDescription(); } public class Panda extends Animal { public String getDescription() { return "Panda is a nice animal.."; } } Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 (endret) Endangerd skal være en subklasse av ZooAnimal. Den skal være superklassen til truete dyr og være abstrakt. Det står spesifisert i oppgave heftet mitt. Jeg står litt fast, er ikke akkurat den beste på dette feltet. Eksempel på klassen til et truet dyr public class Panda extends ZooAnimal { public Panda() { super(); } public Panda (String name, int age, String desc) { super(name, desc, age); } public String toString() { String returnString = getName() + " (Panda)\n"; returnString += super.toString(); return returnString; } } Endret 25. april 2007 av lizza-krissa Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Det er også flere dyr som er truet, men det er to dyr som deler samme grad som pandaen. Det er 3 grader. CR, EN, VU. Cr er den mest alvorlige. Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 (endret) her er ZooAnimal. public class ZooAnimal { private String name; private String origin; // hvor kom dyret opprinnelig fra, sted, land eller kontinent? private String description; private int age; private String food; // hva spiser dyret private Sex sex; // hvilket kjønn har dyret private String panda; private String kenguru; protected ZooAnimal() { name = null; origin = null; description = null; age = 0; sex = Sex.UNKNOWN; } protected ZooAnimal(String name, String desc, int age) { this.name = name.trim(); this.age = age; description = desc.trim(); origin = null; sex = Sex.UNKNOWN; } public void setName(String name) { this.name = name.trim(); } public String getName() { return name; } public void setAge (int age) { if (age >= 0) { this.age = age; } } public int getAge (int age) { return age; } public void setDescription ( String desc) { description = desc.trim(); } public String getDescription() { return description; } public void setOrigin(String o) { origin = o.trim(); } public String getOrigin() { return origin; } public void setFood(String food) { this.food = food.trim(); } public String getFood() { return food; } public Sex getSex() { return sex; } public String toString() { String returnString = "\tAlder: " + age + "\n"; if (sex != Sex.UNKNOWN) returnString += "\tKjønn: " + sex + "\n"; if (food != null ) returnString += "\t Spiser: " + food + "\n"; if (getDescription() != null) returnString += "\tBeskrivelse: " + description + "\n"; if (getOrigin() != null) returnString += "\tKommer opprinnelig fra: " + origin + "\n"; return returnString; } } Edit, liten feil... Endret 25. april 2007 av lizza-krissa Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Tja, for meg virker det direkte feil at Endangered arver fra ZooAnimal; de har _veldig_ lite til felles. Muligens at EndangeredAnimal kan gå, slik at diverse truede dyr arver fra denne igjen, men blir ikke helt riktig det heller. Men hvis oppgaven sier det så.. (vranglære etter min mening.. ) Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Nå tror jeg at jeg har det... Her er Endangered klassen min. public abstract class Endangered extends ZooAnimal { public Endangered() { super(); } public Endangered(String name, String desc, int age) { super(name, desc, age); } public abstract Threatlevel getThreatlevel(); } også lager jeg en ny klasse for graden. Men hvordan skal jeg avslutte de for at de skal bli rett? Tror den første skal være riktig nå, men får ikke til den klassen under helt. public enum Threatlevel { // Her er de forskjellige typene av truete dyr, CR, EN og VU, også legger vi inn verdiene bak. CR("Critically endagered!"),EN("Endagered!"),VU("Vulnerable!"); private String print; Threatlevel(String value) { print = value; } //skrive ut tekstrenger ved tostring metoden public String toString() { Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Disclaimer: Dette er _IKKE_ riktig bruk av arv.. public class PandaAnimal extends Endangered { public PandaAnimal() { super(); } @Override public Threatlevel getThreatlevel() { return Threatlevel.CR; } } Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Her blir vel threat level retunert fra panda klassen, det er vel ikke helt slik det skal være i følge beskrivelsen av det den skal gjøre. Hvis ikke jeg ikke tar feil. Jeg skal implimentere en klasse som heter threat som skal være subklasse av ZooAnimal og superklassen til truete dyr. Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 (endret) Jeg skal implimentere en klasse som heter threat som skal være subklasse av ZooAnimal og superklassen til truete dyr. Hvis panda er et utryddingstruet dyreart, så er dette svaret på det du spør etter her.. PS: At "Threat" er en subklasse av ZooAnimal gir absolutt ingen mening, så det kan umulig stå i oppgaveteksten din.. Endret 25. april 2007 av krigun Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 (endret) Her er oppgaveteksten til den delen av oppgaven: Vi ønsker å gi informasjon om utrydningstruede dyr. Implementer en ny klasse, Endangered, som en subklasse av ZooAnimal. Denne klassen blir superklassen til truede dyreklasser. Endangered er en abstrakt klasse. Må definere en abstrakt metode for å hente ut informasjon om hvor utrydningstruet denne arten er. Det finnes tre kategorier (CR – critical endangerd, EN – endangered, VU – vulnerable). Av disse tre er CR den mest alvorlige. Her er det som er gjort så langt. OBS! 3 klasser i denne koden... Bare postet de slik for latskapens skyld. /** * Class ZooAnimal - generalisering av de ulike dyreklassene. * */ public class ZooAnimal { // data felt som var i Panda før har blitt flyttet opp hit private String name; private String origin; // hvor kom dyret opprinnelig fra, sted, land eller kontinent? private String description; private int age; private String food; // hva spiser dyret private Sex sex; // hvilket kjønn har dyret private String panda; // hva spiser dyret private String kenguru; // hva spiser dyret private Threatlevel threatlevel; /** * Default constructor for ZooAnimal er beskyttet sånn at den ikke * skal kunne kalles av andre enn subklassene. */ protected ZooAnimal() { name = null; origin = null; description = null; age = 0; sex = Sex.UNKNOWN; threatlevel = null; } /** * konstruktør som setter navn, beskrivelse og alder. Den er satt til beskyttet slik at * bare subklasser skal kunne kalle den. * @param name Navnet til dyret * @param desc En beskrivelse av dette dyret * @param age Hvor gammelt er dyret */ protected ZooAnimal(String name, String desc, int age) { this.name = name.trim(); this.age = age; description = desc.trim(); origin = null; sex = Sex.UNKNOWN; threatlevel = null; } /** * Sett navnet til ZooAnimal * @param name Sett navnet til dyret */ public void setName(String name) { this.name = name.trim(); } /** * Hent navnet til dyret * @return navnet til dyret */ public String getName() { return name; } /** * Sett alderen til et ZooAnimal * @param age Alderen som dyret får */ public void setAge (int age) { if (age >= 0) { this.age = age; } } /** * Hent alderen til dyret * @return Alderen til dyret. */ public int getAge (int age) { return age; } /** * Sett beskrivelsen om et dyr * @param desc Beskrivelsen til et dyr */ public void setDescription ( String desc) { description = desc.trim(); } /** * Hent ut beskrivelsen til et dyr * @return Beskrivelsen til et dyr */ public String getDescription() { return description; } /** * Sett hvilket sted, land eller kontinent dyrearten kommer fra * @param o Stedet hvor dyret opprinnelig kommer fra. */ public void setOrigin(String o) { origin = o.trim(); } /** * Hent navnet til stedet hvor dyrearten opprinnelig kommer fra * @return Navnet på land eller kontinentet hvor dyret opprinnelig kommer fra. */ public String getOrigin() { return origin; } /** * Sett hvilken mat dyret spiser. * @param food hvilken mat dyret spiser. */ public void setFood(String food) { this.food = food.trim(); } /** * Hent ut info om hva slags mat dyret spiser * @return Typen mat dyret spiser */ public String getFood() { return food; } /** * Spesifiser hvilket kjønn dyret har. Siden vi bruker en enum, trenger vi ikke sjekke * om det er en lovlig verdi! * @param Kjønnet til dyret. */ public void setSex(Sex aSex) { sex = aSex; } /** * Hvilket kjønn har dyret? * @return Kjønnet til dyret. */ public Sex getSex() { return sex; } /** * Spesifiser hvilket kjønn dyret har. Siden vi bruker en enum, trenger vi ikke sjekke * om det er en lovlig verdi! * @param Kjønnet til dyret. */ public void set(Threatlevel aThreatlevel) { threatlevel = aThreatlevel; } /** * Hvilket kjønn har dyret? * @return Kjønnet til dyret. */ public Threatlevel getThreatlevel() { return threatlevel; } /** * Hent ut beskrivelsen av dyret. * @return En samlet beskrivelse av det vi vet om dyret så langt. */ public String toString() { // Det er lagt en tabulator (\t) inn i begynnelsen av hver linje. String returnString = "\tAlder: " + age + "\n"; if (sex != Sex.UNKNOWN) returnString += "\tKjønn: " + sex + "\n"; // NB: toString() blir kalt på sex. if (food != null ) returnString += "\t Spiser: " + food + "\n"; if (getDescription() != null) returnString += "\tBeskrivelse: " + description + "\n"; if (getOrigin() != null) returnString += "\tKommer opprinnelig fra: " + origin + "\n"; return returnString; } } ********************************************************************************************************** public abstract class Endangered extends ZooAnimal { public Endangered() { super(); } public Endangered(String name, String desc, int age) { super(name, desc, age); } public abstract Threatlevel getThreatlevel(); } ************************************************************************************************************ public enum Threatlevel { CR("Critically endagered!"),EN("Endagered!"),VU("Vulnerable!"); private String print; Threatlevel(String value) { print = value; } //skrive ut tekstrenger ved tostring metoden public String toString() { return print; } } ******************************************************************************************************************* Endret 25. april 2007 av lizza-krissa Lenke til kommentar
Bigbagaroo Skrevet 25. april 2007 Del Skrevet 25. april 2007 Sitter med en gnagende følelse av at enten så er oppgaveskriveren forvirret, eller så har du misforstått noe. Abstrakte metoder brukes for å kunne overlate ansvaret for implementering til en klasse som arver fra denne. La oss anta at dyr kan ha følgende verdier for truet: 1. Truet 2. Veldig truet 3. Utryddet Videre antar jeg at det er ment i oppgaven at ikke alle dyr skal ha egenskapen truet, selvom jeg synes det ville være naturlig med tilstanden "Ikke truet" også. public class Animal { private String name; public void setName(String name) { this.name = name; } public String getName() { return name; } } public abstract class EndangeredAnimal extends Animal { public abstract ThreatLevel getThreatLevel(); } public class Geirfugl extends EndangeredAnimal { public ThreatLevel getThreatLevel() { return truet bla bla } } Uansett, så ville jeg skjært koden ned til benet og heller bygd opp med fluff for å få med properties senere, det gjør det litt lettere å jobbe med. Lenke til kommentar
buskmann Skrevet 25. april 2007 Del Skrevet 25. april 2007 Jeg skal lage en abstract klasse som skal retunere en bestemt verdi om noen ting. F. eks så har jeg to dyr som er truet. Jeg må lege en abstrakt metode for å hente ut hvor truet de dyrene er. Jeg har flere typer dyr også, men de to dyrene her er like truet. Jeg vet ikke helt hvordan jeg skal angripe dette... 8467674[/snapback] 1. Klasser returnerer ingenting, det er det metoder som gjør. 2. Abstrakte metoder returnerer ingenting, for de har ingen kropp (dvs ingen {}). 3. Å deklarere en metode abstrakt betyr: Alle klasser som arver fra denne klassen må implementere sin egen versjon av den abstrakte metoden. Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 (endret) Jeg vet dette er litt teit spørsmål, men jeg sliter virkelig... Jeg har en oppgave som skal leveres om noen timer også kommer jeg ikke videre. Er det noen som kan hjelpe meg litt med denne delen hvis jeg sender den som en zip eller rar fil på e-post? Altså jeg sender alt jeg har gjort pluss oppgaveteksten... Så kan dere se på det også gi meg et tips? jeg ber ikke dere om å gjøre oppgaven foe meg, men å se på den slik at dere kan forklare meg eller å hjelpe meg videre fra der jeg er nå. Jeg får ikke karaktere eller noe på oppgaven. Det er bare noe som må leveres for å få ta eksamen. Jeg har klart alt helt til nå. Det er bluej filer... Endret 25. april 2007 av lizza-krissa Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Vi ønsker å gi informasjon om utrydningstruede dyr. Implementer en ny klasse, Endangered, som en subklasse av ZooAnimal. Denne klassen blir superklassen til truede dyreklasser. Å lese denne teksten får meg til å tenke på at læreren/bokforfatteren er HEEELT ute og kjører med OO konseptene sine. Dette blir jo uansett feil. Hva med planter som er utrydningstruet da? Mulig jeg sov i naturfagstimene, men jeg mener å huske at et tre som er utrydningstruet har lite/ingenting til felles med et dyr i dyrehagen. Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Svaret på denne oppgaveteksten er allerede i post #8. Helt feil bruk av arv, men det er jo det oppgaveteksten spør om. Lenke til kommentar
buskmann Skrevet 25. april 2007 Del Skrevet 25. april 2007 (endret) Men se på det Bigbagaroo har skrevet da. Det er strukturen du ønsker å lage også. Edit: Ja, og post 8. Jeg koder gjerne Java for deg. På fakturaen fra min arbeidsgiver vil det stå 1190 kr/timen, pluss moms. Svart kan jeg gjøre det for 300 kr/timen. Endret 25. april 2007 av buskmann Lenke til kommentar
krigun Skrevet 25. april 2007 Del Skrevet 25. april 2007 Jeg koder gjerne Java for deg. På fakturaen fra min arbeidsgiver vil det stå 1190 kr/timen, pluss moms. Svart kan jeg gjøre det for 300 kr/timen. 8471748[/snapback] Hehe, vil tro markedet for denslags er rimelig stort. Tittel: Oppgavekonsulent Lenke til kommentar
blacktower Skrevet 25. april 2007 Del Skrevet 25. april 2007 Det du postet ser ut til å være i samsvar med oppgaveteksten så langt. Om det er noe mer du lurer på får du heller poste det her. Lenke til kommentar
lizza-krissa Skrevet 25. april 2007 Forfatter Del Skrevet 25. april 2007 Hadde jeg bare hatt peng. Lenke til kommentar
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å