Lektion 19 (12 okt)

Egna abstraktioner

Läsanvisningar

Övningar

Lösningsförslag

Begreppet "abstraktion" nedan syftar på antingen en statisk metod, en klass med statiska metoder eller en klass som är avsedd att användas till att skapa objekt.

  1. Skriv en abstraktion som läser indata från konsolen och ber användaren att mata in data igen så länge värdet inte är av rätt typ. (Abstraktionen ska alltså alltid returnera ett värde så småningom och aldrig krascha programmet.) Abstraktionen ska ha stöd för att läsa in värden av följande typer: heltal, decimaltal, booleska värden och vanliga strängar.

    Ett program som använder abstraktionen skulle alltså kunna se ut exempelvis så här:

    1. Mata in ett heltal: hello
    2. "hello" är inte ett giltigt heltal
    3. Mata in ett heltal: 123
    4. Mata in ett booleskt värde: 456
    5. "456" är inte ett giltigt heltal
    6. Mata in ett booleskt värde: true
    7. Du matade in 123 och true
    • Skriv en variant som också kan läsa in värden av en komposit datatyp: Definiera en egen klass (exempelvis Person) och utöka abstraktionen så att den också kan skapa instanser av denna klass genom att läsa in värdena för de olika instansvariablerna steg för steg (med samma sorts felhantering som förut).

      Ett program som använder abstraktionen skulle alltså kunna se ut exempelvis så här:

      1. Mata in ett namn: Jakob
      2. Mata in en ålder: hello
      3. "hello" är inte en giltig ålder
      4. Mata in en ålder: 30
      5. Ett Person-objekt med namnet Jakob och åldern 30 har skapats
  2. Skriv en abstraktion som skapar godtyckliga nordiska flaggor: ett kors med valfri färg ovanpå ett fält med en annan valfri färg. Det ska också vara möjligt att bestämma om flaggan ska ha ett "yttre kors" (som Norge och Island) eller inte (som Sverige, Danmark och Finland).
  3. Skriv en abstraktion som skapar ett formulär med ett godtyckligt antal etiketter (Label) och textrutor (TextBox) placerat i en tabell: etiketterna i vänstra kolumnen och textrutorna i högra. Abstraktionen ska alltså kunna användas till att skapa något som liknar följande:

    • Skriv en variant som inte bara skapar textrutorna utan också låter den som använder abstraktionen komma åt värdena i dem, sätta event handlers på dem och i övrigt arbeta med dem som vanligt.
    • Skriv en variant som låter den som använder abstraktionen skapa ett formulär med inte bara textrutor utan också andra kontroller, exempelvis kryssrutor (CheckBox) och nummerrutor (NumericUpDown).
  4. Välj någon tidigare övning (inklusive de stående övningarna) och skapa en abstraktion som gör övningen enklare att lösa, eller som gör det enklare att lösa liknande övningar.