Lektion 11 (21 sep)

Gränssnitt (interfaces)

Läsanvisningar

Övningar

Lösningsförslag

Utöver dessa övningar som handlar om enbart gränssnitt finns även de stående övningarna som innefattar många olika moment.

  1. Definiera klasser för tre olika sorters produkter som alla har olika egenskaper. (Bilar kan exempelvis ha hästkrafter, datorer kan ha hårddiskutrymme och skor kan ha storlek.) Samtliga produkter ska dock ha ett namn och ett pris i kronor. Skriv sedan en TotalPrice-klassmetod (static) som tar en array av godtyckliga produkter som argument och returnerar det totala priset för samtliga produkter.
  2. Gör en utökning av ditt program från förra övningen. Olika typer av produkter ska fortfarande ha olika egenskaper men nu ska varje typ av produkt också ha metoden void Enlarge(int steps) som ökar produktens storlek med ett steg. Vad "ett steg" innebär kan skilja sig mellan olika typer av produkter. (För bilar kan det exempelvis innebära 20 extra hästkrafter, för datorer kan det innebära 50 gigabyte extra utrymme och för skor kan det innebär en storlek större.) Skriv sedan en Supersize-klassmetod (static) som går igenom en kundvagn (en array av produkter) och ökar samtliga produkters storlek med två steg.
  3. Gör en utökning av ditt program från förra övningen. Samtliga produkter ska nu ha en Summary-property som returnerar en sträng som sammanfattar produkten på ett läsbart sätt. (Bilar kan exempelvis sammanfattas med något som liknar "Bilen [modellnamn] har [antal hästkrafter] hästkrafter.") Definiera sedan en klass för kunder som har namn och ålder och kan sammanfattas med en sträng på samma sätt som produkter. Skriv slutligen en ShowDatabase-klassmetod (static) som tar emot en array med både produkter och kunder och för var och en av dessa skriver ut deras sammanfattning på terminalen.

    Om arrayen exempelvis innehåller objekten new Customer { Name = "Jakob", Age = 30 } och new Car { Name = "Batmobile", Price = 123456789, Horsepowers = 1000 } så skulle programmet kunna skriva ut följande:

    Kunden Jakob är 30 år gammal.
    Bilen Batmobile har 1000 hästkrafter.