Lek$on 3: Kunskapsrepresenta$on. Robin Keskisärkkä

Relevanta dokument
Lek$on 4: Kunskapsrepresenta$on. Robin Keskisärkkä och Jonas Rybing

Artificiell Intelligens Lektion 4

Lektion G43 Artificiell intelligens. Robin Keskisärkkä Ellinor Ihs Håkansson Cornelia Böhm

Lektion 2: Sökagenter. Robin Keskisärkkä

DD1311 Programmeringsteknik för S1 Laborationer läsåret

729G06 Föreläsning 1 Objektorienterad programmering

Objektorientering Klasser

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Lek$on 4: Planering. Robin Keskisärkkä

Facit Tentamen TDDC (7)

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Detaljbeskrivning av Player

Att referera till objekt

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Webbtjänster med API er

Classes och Interfaces, Objects och References, Initialization

Inkapsling (encapsulation)

TDDD78 Objektorientering i Java, del 2

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

Databaser design och programmering. Fö 2: Design processen, ER-modellering

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Karlstads Universitet, Datavetenskap 1

Webprogrammering och databaser. Konceptuell datamodellering med ER-modellen

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

TER3. Försättsblad till skriftlig tentamen vid Linköpings universitet G28 TEN1 Webprogrammering och databaser Tentamen IDA 1 (7)

OOP Objekt-orienterad programmering

Teoretisk del. Facit Tentamen TDDC (6)

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

Lab5 för prgmedcl04 Grafik

Databaser design och programmering. Design processen ER- modellering

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

DD1311 Programmeringsteknik för CL1 Laborationer läsåret

TDDC74 Lab 02 Listor, sammansatta strukturer

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Inlämningsuppgift MiniPlotter

Antag att följande träd genereras i ett spelförande program om vi applicerar evalueringsfunktionen

OOP Tenta

Kopiering av objekt i Java

Dagens Agenda. Klient- och Serveroperativsystem Installation av Windows Server Genomgång av Windows Server Roller och Funktioner Domänhantering DNS

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 8 10, 7 april 2016

Grunderna för relationsmodellen!

Vad är en databas? Databaser. Relationsdatabas. Vad är en databashanterare? Vad du ska lära dig: Ordlista

Kort om klasser och objekt En introduktion till GUI-programmering i Java

ID1004 Laboration 4, November 2012

Abstrakta datatyper Laboration 2 GruDat, DD1344

Design och konstruktion av grafiska gränssnitt

Andra relationella språk

Uppgifter till tenta i 729G04 Programmering och diskret matematik. 17 december 2015, kl 14:00-18:00

Laboration 1 - Grunderna för OOP i Java

Vad behövs för att skapa en tillståndsrymd?

Objektorienterad programmering i Java I

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Laboration i datateknik

Databasdesign. E-R-modellen

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015

Konceptuell modellering

Design och konstruktion av grafiska gränssnitt

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Introduktion. Byggstenar TDBA

TDDC74 FÖRELÄSNING 9 ANDERS MÄRAK LEFFLER IDA/HCS

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Fly me to the moon. Laboration om relationer, TDDC75 Diskreta strukturer. Mikael Asplund. 5 september 2017

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Tjänsteprototypning. och tjänsterepresentationer. Johan Blomkvist IDA-HCS-IxS

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

Övning 3. Datateknik A, Java I, 5 poäng

Vill du vara med från starten, rulla då ner till slutet av dokumentet. Nya inlägg alltid först.

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Skriftlig tentamen i kurserna TDDD12 och TDDB48 Databasteknik kl

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Webprogrammering och databaser. 729G28 Webprogrammering och databaser. Kursöversikt. Praktisk info. Webprogrammering. Ändringar mot förra året

Objektorienterad programmering

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Spel som interaktiva berättelser. Mer teoretiserande!

Klasser och objekt. Henrik Johansson. August 20, 2008

Språket Python - Del 2 Grundkurs i programmering med Python

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Moraliska relationer till naturen

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Tenta (TEN3) i kursen 729G04 Programmering och diskret matematik 5 feb 2016, kl 14:00-18:00

Besiktningsprotokollet

Innehållet i Snomed CT en översikt

729G04 Programmering och diskret matematik. Föreläsning 7

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

kl Tentaupplägg

Transkript:

Lek$on 3: Kunskapsrepresenta$on Robin Keskisärkkä

Översikt Laborationerna så här långt Genomgång av laboration 3 Uppgift Förberedelser Kunskapsrepresentation Framesteori

Uppgi9 Implementera ett frames-system Frames-struktur Ärvning Procedural attachments Diskussionsuppgift För VG: Utöka ert system till att stödja multipelt arv

Förberedelser Läs igenom laborationsinstruktionerna Läs om kunskapsrepresentation i R&N (kap. 12) Förstå frames-strukturen Bestäm domän att representera

Kunskapsrepresenta$on Viktigt inom många områden Robotik, expertsystem, Semantic Web mm. Representationstyper Representationsformat Labb 3 fokuserar på frames-system

Frames-system Används för att spara information hierarkiskt Frame-instanser representerar koncept eller objekt Information sparas som attributvärden Attribut hämtas och lagras på olika sätt Ärvning/inte ärvning Ersätt/lägg till Attributvärden kan Vara enkla eller sammansatta värden (strängar, tuplar, listor, etc.) eller procedural attachments

Exempel Djur Fågel Kräldjur Amfibie Uggla Struts Krokodil Groda Padda Fjälluggla Molybdophanes Trevor Hedwig Fåglar kan flyga och därmed kan Hedwig flyga E9ersom strutsar inte kan flyga så kan inte Molybdophanes flyga Hedwig heter Hedwig

Huvudfunk$onalitet Lagra information om nya ramar och attribut store_frame store_attribute Lagra värden för ett visst attribut i en frame tell Fråga efter värden för ett visst attribut i en frame ask

KodskeleR Innehåller tre klasser Frame KnowledgeBase FrameSystem Användaren interagerar endast med systemet via fyra metoder som finns i FrameSystem

KodskeleR: Arkitektur FrameSystem store_frame store_attribute ask tell local inherit add replace KnowledgeBase add_attribute add_frame get_attribute_methods get_frame 1 1 1 * Frame add_attribute_value replace_attribute_value get_attribute_value get_isa

Komma igång Hur samverkar klasserna? Vad gör de andra metoderna? Klurigheter I vilken ordning bör jag implementera mina metoder? Hur kontrollerar man att en metod fungerar när den är beroende av att andra redan finns implementerade? Hur hanterar man fel på bästa sätt?

Hur samverkar klasserna? Användaren kommunicerar bara med FrameSystem Kunskapsbasen lagrar både frames och attribut Utnyttjas av FrameSystem för att hämta frames och för att hantera atttribut på rätt sätt Information om hur ett attribut fungerar är inte samma sak som ett attributvärde Frame-instanser sparar information om ett visst koncept/objekt Innehåller metoder för att hämta och spara attributvärden Håller reda på föräldrarelationen (ISA)

Vad gör de andra metoderna? Både tell och ask kan utföras på två sätt. Vilken metod som väljs beror på attributet i fråga. Tell Ask replace Ersätt redan existerande värde add Lägg till ytterligare ett värde local Om inte värdet finns i denna frame så ge upp inherit Om inte värdet finns i denna frame så fråga föräldern Övriga metoder finns för att underlätta kommunikation mellan klasserna. Dessutom underlättar de felhanteringen.

Förslag på implementa$onsordning 1. Skapa och lagra några frames för er domän 2. Specificera några tillåtna attribut för er domän 3. Lagra värden på attribut (börja med replace sedan add) 4. Hämta värden på attribut (börja med local sedan inherit) 5. Implementera er procedural attachment 6. Lägg till felhantering Förutse vilka fel som kan uppstå. Returnera None vid fel men ha även med rimliga felutskrifter. Använd inte try-except

Hur kontrollerar man ar en metod fungerar? Användaren interagerar bara med frame-systemet... men ni som utvecklare kan komma åt både klassattribut och metoder! Exempel Kontrollera om store_frame fungerar: Skriv ut all frames som finns lagrade i KB Kontrollera om klassen Frame fungerar: Skapa en frame utanför systemet och kontrollera att klassen fungerar som väntat

Hur hanterar man fel på bästa sär? Förutspå fel Anta att användaren kommer att stava fel Anta att användaren kommer att göra saker i fel ordning Försök att hantera felen på så få ställen som möjligt Felutskrifter är bra för människor men inte maskiner. Returnera None om det blir fel så att andra saker som är beroende kan bli meddelade om att något gått snett. Syntaxfel behöver inte hanteras autocheck.py kan användas för att få se om man hanterat de allra vanligaste felen

Välja domän Bestäm er för en domän att representera i frame-systemet Domänen ska vara lämplig att representera hierarkiskt Några förslag på domäner: Böcker, växter, fordon, mat, djur, geografisk information Definiera lämpliga attribut Vilka kan ärvas och vilka kan inte ärvas? För vilka attribut tillåts flera värden? Rita upp er domän som ett klass- eller UML-diagram Fundera över en procedural attachment. Metoden ska bidra till framesystemet på något sätt!

Live-kodning Kolla in skelettet Kolla in autocheck.py Visa hur metoder kan sparas i variabler och köras

www.liu.se