ha viss kunskap om den vetenskapliga grunden för objektorienterad programmering samt omfattande kunskap om dess beprövade erfarenhet, 2. i omfattande grad kunna genomföra lagarbete och samverka i grupper med olika sammansättning dvs både grupper där gruppmedlemmarna själva bildat gruppen och grupper som läraren beslutat om, 3. ha förmåga att skapa, analysera och kritiskt utvärdera olika tekniska lösningar i form av implementering av datorprogram med hjälp av ett modernt objektorienterat programmeringsspråk och 4. ha förmåga att planera och, med adekvata metoder, genomföra kvalificerade uppgifter inom givna ramar.
Kursinnehåll
Objektbegreppet. Referenser. Arv, återanvändning av kod, typer, subtyper, polymorfism. Abstrakta och konkreta klasser samt inkapsling. Klient- och implementationsvy. Gränssnitt. Rekursion för beräkningar och implementering av länkade listor. Standardbibliotekets list- och behållarklasser. Abstrakta datatyper som stackar, köer och uppslagstabeller. Kontraktsprogrammering med invarianter samt för- och eftervillkor. Felhantering med undantag. Filhantering (I/O). Händelsestyrda grafiska användargränssnitt. Dokumentation via kommentarer.
Förutsättningar
Grundläggande behörighet samt grundläggande kunskaper och färdigheter i imperativ programmering (motsvarande D0028E - Programmering och digitalisering, 7.5 hp).
Litteratur
David J. Eck, Introduction to Programming Using Java, Eighth Edition, 2021. Fritt tillgänglig över nätet från: https://math.hws.edu/javanotes/ Extra material fritt tillgängligt från nätet.