Helsingfors universitet/Institutionen för datavetenskap/Fortsättningskurs i programmering/© 2010 Arto Wikla. Fortsättningskurs i programmering, tent 13.12 2010/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 Heltalssmangd med följande "API": * public Heltalsmangd(int kapacitet) skapar det tomma objektet Heltalsmangd, där man är beredd på mängdstorleken som ges som parameter som förinställt värde (default) * public boolean infoga(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 avlagsna(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 ingar(int element) returnerar true om elementet ingår i mängden och false om elementet inte ingår i mängden * public int storlek() 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 Heltalsmängd Programmera underklassen HeltalsmangdPlus för klassen Heltalsmangd med följande "API": * public HeltalsmangdPlus() skapar ett tomt objekt HeltalsmangdPlus, som är förberett på mängder med storleken 100 element som förinställt värde * public HeltalsmangdPlus(int kapacitet) skapar ett tomt objekt HeltalsmangdPlus, som är förberett på mängder med storleken som ges som parameter som förinställt värde * public HeltalsmangdPlus kombination(HeltalsmangdPlus b) returnerar som sitt värde en mängd som innehåller alla element i this-mängden och mängden b * public HeltalsmangdPlus snitt(HeltalsmangdPlus b) returnerar som sitt värde en mängd som innehåller exakt alla element som hör till både this-mängden och mängden b * public HeltalsmangdPlus skillnad(HeltalsmangdPlus b) returnerar en mängd som innehåller alla element i this-mängden som inte hör till mängden b Illustrera alla operationer, också de nedärvda, hos klassen HeltalsmängdPlus med ett skilt huvudprogram. (12 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. 1. överklass och underklass 2. abstrakt klass och gränssnittsklass (interface) 3. polymorfism och "hook method" ("koukkumetodi") (12 poäng) 3. Skapa programmet RaknaAntalOrd, med vilket man kan studera antalet ord in en textfil. Först ber programmet om namnet på textfilen som skall analyseras. Sedan be programmet om orden som skall studeras, orden som skall räknas. "Orden" kan vara vilken som helst, icke-tom String-teckensträng. Programmets egentliga jobb är att räkna och utmata antalet av det givna ordet i den givna filen. Programmet måste vara berett på fel och behandla avvikelser. Felmeddelandena 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 Tips: * HashMap, som representerar teckensträngar som heltal, är av typ HashMap. * För utskrivningen av resultatet kan du nöja dig med den textrepresentation som HashMaps egen toString skapar, se exemplet nedan. * Användarexempel: Vilken fil skall analyseras? (en tom teckensträng kommer att avbryta programmet) flora.txt Finner inte filen flora.txt! Vilken fil skall analyseras? (en tom teckensträng kommer att avbryta programmet) fauna.txt Ge ord som skall analyseras (en tom teckensträng kommer att hejda inmatningen av ord) katt Ge ord som skall analyseras (en tom teckensträng kommer att hejda inmatningen av ord) mus Ge ord som skall analyseras (en tom teckensträng kommer att hejda inmatningen av ord) hund Ge ord som skall analyseras (en tom teckensträng kommer att hejda inmatningen av ord) Analys av filen fauna.txt: {mus=124, katt=35, hund=235} (12 poäng) Lycka till med tenten & good jul!