Helsingfors universitet/Institutionen för datavetenskap/Fortsättningskurs i programmering/© 2011 Arto Wikla. Fortsättningskurs i programmering, tent 12.12 2011/AW Skriv upptill på varje konceptark namnet på kursen, datum för tenten, samt ditt namn, studienummer och din underskrift. Skriv varje svar på ett skilt konceptark! Inget källmaterial är tillåtet under tenten. 1. Du har till ditt förfogande klassen IntJoukko med följande "API": * public IntJoukko(int kapacitet) skapar det tomma objektet IntJoukko, där man är beredd på mängdstorleken som ges som parameter som förinställt värde (default) * public boolean lisaa(int element) infogar ett element in mängden om det inte redan fanns där; returnerar true om det faktiskt infogades, returnerar false om elementet redan fanns i mängden * public boolean poista(int element) tar bort ett element ur mängden om det råkade finnas där; returnerar true om det faktiskt avlägsnades, returnerar false om elementet inte ens fanns i mängden * public boolean kuuluu(int element) returnerar true om elementet ingår i mängden och false om elementet inte ingår i mängden * public int mahtavuus() mängdens storlek (d.v.s. antalet element i mängden) * metoden public int[] toIntArray() returnerar en heltalstabell som innehåller exakt alla elementen i mängden * metoden public String toString() ger en String-representation av mänden, typ {-3, 1, 76} Vi vet inget annat om strukturen eller förverkligandet av klassen IntJoukko. Programmera underklassen IntJoukkoPlus för klassen IntJoukko med följande "API": * public IntJoukkoPlus() skapar ett tomt objekt IntJoukko, som är förberett på mängder med storleken 100 element som förinställt värde * public IntJoukkoPlus(int kapacitet) skapar ett tomt objekt IntJoukkoPlus, som är förberett på mängder med storleken som ges som parameter som förinställt värde * public IntJoukkoPlus yhdiste(IntJoukkoPlus annan) returnerar som sitt värde en mängd som innehåller alla element i this-mängden och annan-mängden * public IntJoukkoPlus leikkaus(IntJoukkoPlus annan) returnerar som sitt värde en mängd som innehåller exakt alla element som hör till både this-mängden och annan-mängden * public IntJoukkoPlus skillnad(IntJoukkoPlus annan) returnerar en mängd som innehåller alla element i this-mängden som inte hör till annan-mängden Illustrera alla operationer, också de nedärvda, hos klassen IntJoukkoPlus med ett skilt huvudprogram. (10 poäng) 2. Beskriv kort och koncist följande begrepp inom Javaprogrammering. Referera inte till de andra uppgifterna i ditt svar, eftersom varje svar granskas av olika granskare! Maximilängden på svaret är ett konceptark, alltså 4 sidor. a) överklass och underklass b) abstrakt klass och gränssnittsklass (interface) c) polymorfism d) "application framework" ("sovelluskehys") och "hook method" ("koukkumetodi") e) "event driven" program (10 poäng) 3. Gör ett program, Ordbok, som erbjuder en ordbokstjänst: Först frågar programmet namnet av ordboksfilen. Sedan läser programmet ordparen ord-översättning från denna textfil. Varje ord är på sin egen rad i filen. Varje udda rad ger ordet på originalspråket. Varje udda rad följs av en jämn rad med översättningen av ordet på föregående rad. Efter att det har lärt sig ordlistan reagerar programmet på varje inmatningsrad (= ordet på originalspråk) som användaren skriver med att utmata översättningen av ordet, eller med beskedet att ordet inte finns översatt, på skärmen. Om användaren skriver en tom inmatningsrad, slutar programmet exekvera. Du får betrakta enskilda inmatningsrader i sig som "ord" men annars måste programmet vara berett på fel och kunna behandla undantag. Felbeskeden måste vara åskådliga. Använd klassen HashMap i din lösning: * public HashMap() skapar ett tomt objekt HashMap som anknyter objekt av typ K till objekt av typ V * public V put(K key, V value) förbinder associationen key --> value med objektet HashMap; om en association redan är förbunden med nyckeln, ersätter metoden den med en ny och returnerar värdet av den gamla betydelsen; om nyckeln inte finns ger metoden värdet null * public V get(Object key) returnerar som sitt värde värdet på key-nyckeln; om nyckeln inte finns ger metoden värdet null * public boolean containsKey(Object key) true om key finns bland nycklarna, annars false * public V remove(Object key) tar bort nyckeln key och dess värde, d.v.s. associationen key --> value avlägsnas, ger värdet för det avlägsnade värdet value; ger null om nyckeln inte finns * public String toString() skapar en strängpresentation av objektet HashMap, komponenterna modifieras med deras egna toString-metoder (10 poäng) Lycka till med tenten & good jul!