b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

Relaterede dokumenter
DANMARKS TEKNISKE UNIVERSITET

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 18/ Side 1 af 11

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

Det er muligt at chekce følgende opg. i CodeJudge: og

Ugeseddel 4 1. marts - 8. marts

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Skriftlig eksamen i Datalogi

Java Klasse nedarvninger

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Tree klassen fra sidste forelæsning

DRONNINGER (QUEENS) Opgave 1

Test af It-komponent

Skriftlig eksamen i Datalogi

Klasser og nedarvning

Skriftlig eksamen i Datalogi

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Forelæsning Uge 2 Mandag

It og informationssøgning Forelæsning 7 1. november 2006 Jakob Grue Simonsen. Indlejring og Nedarvning

A Profile for Safety Critical Java

Forelæsning Uge 5 Mandag

Forelæsning Uge 6 Mandag

Singleton pattern i Java

LEG & LÆR SKAK MED. Dansk Skoleskak. Elevhæfte

Løsning af møntproblemet

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Eksempel: Skat i år 2000

Forelæsning Uge 3 Mandag

Civilingeniøreksamen januar Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

SWC eksamens-spørgsmål. Oversigt

Forelæsning Uge 3 Mandag

Hvad er Objekter - Programmering

Forelæsning Uge 12 Torsdag

Bemærk, der er tale om ældre versioner af softwaren, men fremgangsmåden er uændret.

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Forelæsning Uge 12 Mandag

Forelæsning Uge 5 Mandag

SWC Elementer i klassedefinition

Forelæsning Uge 1 Torsdag

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Forelæsning Uge 3 Torsdag

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

Abstrakte datatyper C#-version

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Anvendelse af metoder - Programmering

Forelæsning Uge 5 Mandag

Forelæsning Uge 2 Torsdag

Forelæsning Uge 5 Mandag

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

Forelæsning Uge 1 Torsdag

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Mandag

Før-skoleskak Opgavehæfte Navn:

COMPUTERSPIL 1. Opgave 1. Opgave 2

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Som sagt kræves der helst lidt viden om OOP hvis man virkelig vil lærer noget, og ikke bare lave copypaste

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Objektorienteret Programmering

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 6

Kursusarbejde 3 Grundlæggende Programmering

Hvordan vælger jeg dokumentprofilen?

Klasser og objekter. (Afsnit i manualen)

Forelæsning Uge 3 Mandag

Om binære søgetræer i Java

Sekvenser af længde mellem 1 og 4 ord repræsenteres ved en klasse Segment, som uden grundlæggende ser således ud:

DM502. Peter Schneider-Kamp

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

DM507 Algoritmer og datastrukturer

Kursus navn: Indledende programmering Kursus nr

Forelæsning Uge 2 Torsdag

Databaseadgang fra Java

dmasark Aflevering - Uge 50

Opgaven fortsat. Opfølgning på Opgave 2 og Use Cases. Opgaven. Trin 1: Væsentlige begreber. Resultatliste: 100 bryst, herrer

DM507 Algoritmer og datastrukturer

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

LÆR SKAK+MAT MED. Dansk Skoleskak. Elevhæfte

I profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller

COMPUTERSPIL 1. Opgave 1

DM507 Algoritmer og datastrukturer

Efterslægtstavlen kan også udskrives som ren tekst med indrykning: Tonnes ~Ursula ina ~Morten Ferdinand Ida Diderich Oluf ~Pia Grethe Jonna Hedvig Rud

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

DM01 DM Obl. Afl. Jacob Christiansen, , D12, Elias 13/ Side 1 af 7

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Skriftlig eksamen i Datalogi

Datalogi OB, Efterår 2002 OH er, forelæsning 3/ forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

public Set(int size) { this.listelement = new LinkedList<Integer>(); }

Vejledende løsninger

DM507 Algoritmer og datastrukturer

Virkefeltsregler i Java

REGLEN: Et SÆT er tre terninger, hvor den enkelte egenskab er den samme på alle tre ELLER egenskaberne er forskellige på alle tre terninger.

Forelæsning Uge 2 Torsdag

14.1 Internationale programmer

Dag 10 Flertrådet programmering

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen kok04

dsoftark E2007 Gruppe 14: Anders, Troels & Søren 15. november 2007 Rapport til a. 1 'TDD rytmen'

Forelæsning Uge 2 Torsdag

Transkript:

Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning og spare dig selv noget arbejde? b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. End of Exercise 1 Exercise 2: Dit team i firmaet ÅsynTobindsværk er sat til at lave en database over klienters bygningers relevante information. Dit team kommer frem til at I ikke gider gemme et generelt Bygning objekt, men forskellige delkategorier af bygninger, som f.eks. en Lejlighed, FirmaBygning etc.. Du når lige akkurat at skrive følgende kode, før en kollega stopper dig og siger Du kan ikke instansiere et abstrakt objekt, og du instansiere et helt array af dem i databasens konstruktør!. Er påstanden korrekt? Hvis ja omstrukturer koden til at imødekomme kravene, hvis nej så forklar hvad der er forkert ved påstanden. class Database { Bygning [] bygninger ; Database Database (){ bygninger = new Bygning [100000]; abstract class Bygning { int antal_folk ; int sam let_ad_reven ue ; boolean indeholder_aktive_brugere (); class Boligblok extends Bygning { class FirmaBygning extends Bygning { End of Exercise 2 Exercise 3: Du skal lave en model af en zoologisk have. Kig på filen Zoo.java på CodeJudge og implementer klasser, så koden kan køre og printer følgende: 1

Snake is an animal with 0 legs that lays eggs. Turtle is an animal with 4 legs that lays eggs. Elephant is an animal with 4 legs that gives birth. Giraffe is an animal with 4 legs that gives birth. Zebra is an animal with 4 legs that gives birth. Bull ant is an animal with 6 legs that lays eggs. Tænk grundigt over, hvordan du kan benytte abstrakte klasser og nedarvning til at skrive så effektiv kode som muligt. Udnyt eksempelvis, at alle reptiler lægger æg, og at alle insekter har seks ben. End of Exercise 3 Exercise 4: Du er i gambling-firmaet Den52ArmedeTyveKnægt blevet sat til at lave et kortspils-simulation i Java. a Lav en class Card der har følgende konstruktør public Card ( String suit, int value ){ Hvor suit er kuløren af kortet, spades, heart, clubs og diamonds, og value er en værdi i intervallet [0; 12] der hhv. repræsenterer 2, 3, 4, 5, 6,... king, ace. b Lav en passende tostring() metode for Card, så den følger hvordan man vil læse kortet op, f.eks. 9 of hearts, queen of diamonds etc. c Lav en class Deck hvori der indgår 52 kort, dvs. 13 af hver kulør uden jokere. Lad et helt deck blive skabt i constructoren. public Deck (){ Card [] deck = new Card [ 52]; d For at sikre sig at spillet er fair og folk ikke udnytter at constructoren skaber kortene i en bestemt rækkefølge, skal du implementere et blandings-metode shuffle i Deck classen, som constructoren benytter. public void shuffle (){ e For at få simulationen til at køre helt perfekt, indså Den52ArmedeTyveKnægt at de nogle gange vil kunne sammenligne kortene med følgende prioriteringer: 1. < < <. (heart mindre end diamonds, diamonds mindre end clubs og clubs mindre end spades.) 2. 2 < 3 < 4 <... < king < ace Dvs. at hvis du sammenligner 2 of clubs og 4 of clubs, er 2 of clubs mindst. Men hvis du har 4 of clubs og 2 of spades, så er 4 of clubs mindst, idet kuløren er prioriteret højere. 2

Implementer Javas Comparable interface i Card klassen. Bonus: nu kan kortene i Deck sorteres af Arrays klassen. Få den til at fungere med følgende kode: public void SortDeck (){ Arrays. sort ( this. deck ); f ( ) Nogle klienter synes, at shuffle metoden ikke føles tilfældig nok. Selvfølgelig har kunden altid ret, så tilpas din shuffle-metode således at 5 på hinanden følgende kort ikke er i stigende rækkefølge i forhold til prioriteringerne givet. End of Exercise 4 Exercise 5: Lav den abstrakte klasse Skakbrik: public abstract class Skakbrik extends Point { Der holder styr på brikkens farve, position og briktype (springer, løber, osv). Med position menes her par af heltal (x, y) som ligger i [0, 7] [0, 7]. Skakbrikklassen skal have en passende tostring()-funktion, der printer således: sort springer F6 Her bliver værdien for x omsat til et bogstav mellem A og H, og værdien for y bliver omsat fra intervallet [0, 7] til intervallet [1, 8]. Giv klassen en passende konstruktører, der initierer brikken hvis den er indenfor pladen, og kaster en exception ellers. Konstruktørmetoden må gerne, ud over koordinaterne x og y, tage farve og briktype som argument. Lav klasserne for løber, springer, dronning, tårn og konge, så de udvidder skakbrikklassen. (Loeber, Springer, Dronning, Taarn og Konge.) public class Springer extends Skakbrik { Lav passende konstruktører for dine brikker. Testeren i CodeJudge kalder dem med: Springer minlillepony = new Springer (5,3," hvid "); Implementer passende translate-metoder for alle brikker. Testeren i CodeJudge kalder dem med minlillepony. translate (1,2); Her kan du virkelig udnytte at du har en abstrakt klasse! For at teste om trækket er lovlig skal du nemlig teste to ting: 1. trækket er passende for den givne briktype og 2. trækket flytter ikke brikken udenfor brættet. Overvej flere løsningsmuligheder, diskuter dem gerne med læsegruppen, og implementer så en velovervejet og velvalgt løsning, der undgår redundans. End of Exercise 5 3

Exercise 6: Nedenstående klasse har en konstruktør. Betyder det, at man kan oprette en instans af den (Fun clownperson = new Fun(10);)? public abstract class Fun { public int funamount ; public abstract String makelaughter (); public Fun ( int funamount ) { this. funamount = funamount ; Gør det en forskel, hvis makelaughter(); bliver implementeret, så der ingen abstrakte metoder er? Hvad betyder det, at alle felter i et interface er public static final? Kan et interface have konkrete metoder?* Er metoderne i et interface altid public static?** End of Exercise 6 Exercise 7: Hvad går galt i følgende program, og hvorfor? public class AnimalShelter { public static void main ( String [] args ) { Dog pet1 = new Dog (" Boris "); Cat pet2 = new Cat (" Dorit "); pet1. eat (5000); System.out. println ( pet2. pet ()); fourleggedcreature [] pets = {pet1, pet2 ; for ( int i = 0; i < pets. length ; i ++) { System.out. println ( pets [i]. getname ()); abstract class fourleggedcreature { boolean hasfur ; int weight ; abstract void eat ( int kilogram ); 4

class Dog extends fourleggedcreature { String name ; void eat ( int kilogram ) { weight += kilogram ; Dog ( String name ){ hasfur = true; weight = 30; this. name = name ; String getname () { return this. name ; class Cat extends fourleggedcreature { String name ; void eat ( int gram ) { weight += gram /2; Cat ( String name ){ hasfur = true; weight = 5; this. name = name ; public String pet (){ return " Puurrrr "; String getname () { return this. name ; End of Exercise 7 5