1. Mekaniska räkneverk används fortfarande, t.ex. för att räkna antal passagerare på färjor. Skriv en klass som motsvarar ett sådant räkneverk.

    Räkneverket lagrar ett heltalsvärde. Man göra tre saker med det:

    Din klass ska ha en metod för var och en av dessa och en konstruktor som initierar ställningen till 0.

  2. Skriv ett program där användaren anger ett filnamn som programargument. Detta ska vara en existerande textfil med heltal separerade med mellanrum. Använd två instanser av klassen i föregående uppgift för att räkna antalet udda och jämna tal. Skriv ut antal udda och jämna tal i filen på standard output. Om filen inte finns ska programmet skriva detta på svenska och sedan avsluta. Om filen innehåller annat än heltal ska programmet skriva detta och sedan avsluta.

  3. Implementera en klass som representerar delmängder av ändliga mängder. För en mängd av storlek n ska heltal 0,1,…,n − 1 användas för att representera de olika elementen i mängden. Implementera klassen genom att använda en boolesk array av längd n där varje element är true eller false beroende på om talet motsvarande elementets index är medlem i delmängden eller inte.

    Klassen ska heta FinSubset ha en konstruktor med ett argument där användaren anger hur stor grundmängden ska vara, d.v.s. n.

    Implementera följande metoder:

  4. Utöka klassen i förra uppgiften genom att lägga till metoderna:

    Metoderna ska allihop kasta ett undantag av typen SetSizeMismatchException som ska ärva RuntimeException. Definiera denna undantagsklass. Den behöver inte innehålla några specifika instansvariabler.

  5. Skriv ett program testar klassen i förra uppgiften. Det ska ta tre filnamn som programargument. De två första ska antas vara extisterande textfiler innehållande heltal. Varje fil motsvarar en delmängd. I varje fil är det första talet storleken på grundmängden (n i beskrivningen ovan). Sedan följer ett antal tal från 0 till n − 1. Dessa utgör elementen i delmängden. Programmet ska beräkna snittet av de två delmängderna och skriva detta till en fil med filnamn som motsvarar det tredje programargumentet. Filen ska skapas i samma format som de två infilerna.

  6. Skriv en klass Point som representerar punkter i planet. Koordinaterna representeras med double. Det ska finnas en konstruktor som initierar till punkten i origo en som tar två koordinater som argument. Det ska också finnas en konstruktor som tar en Point som argument och initieras aktuell punkt att vara densamma. Instansvariablerna ska vara private. Metoderna getX, getY, setX och setY ska finnas och dessa ska läsa av och ändra värdena på x- och y-koordinaten. Dessa metoder ska också implementeras:

  7. Skriv en klass Line som representerar linjer i planet genom att använda en Point (klassen i föregående uppgift) för varje ändpunkt. Det ska finnas en konstruktor och den ska två punkter som argument, de initiala ändpunkterna. Tänk på att kopiera dessa punkter, inte använda samma referenser i instansvariablerna. Instansvariablerna ska vara private. Dessa instansmetoder ska implementeras: