Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Relevanta dokument
Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsning 3: Händelsestyrda program och användargränssnitt

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Laboration 15 Grafiskt användargränssnitt

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Mer om grafiska komponenter. Händelsestyrda program

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Lektion Händelsehanterare

OOP Objekt-orienterad programmering

Projekt 2 XL. Observer-mönstret

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

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

OOP Objekt-orienterad programmering

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert AWT. Paket för hantering av grafik

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Java-concept och Swing. Swing low, sweet chariot

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Lab5 för prgmedcl04 Grafik

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Arv och Grafiska Användargränssnitt

Grafiska komponenter.

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

Malmö högskola 2007/2008 Teknik och samhälle

Laboration 24 Databasen MySQL och java

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit

ID1004 Laboration 3, 5-6 November 2012

Objektorienterad Programkonstruktion

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

Föreläsning 15: Repetition DVGA02

Arv, Grafiska användaregränssnitt och Inre klasser! Förelasning 12!! TDA540 Objektorienterad Programmering!

Grafiska användargränssitt och händelsehantering

Grafiska användargränssnitt i Java

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Klassen javax.swing.timer

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java

DAT043 - föreläsning 8

Händelsestyrda program

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

MVC-mönstret. model-view-control i Swing

Properties. Användbara metoder som kan anropas i propertychanged:

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Malmö högskola 2007/2008 Teknik och samhälle

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

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

1 Grafiska komponenter

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

Tentamen i Objektorienterad programmering

Lösningsförslag till tentamen

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Rita Egna Bilder, Timer

Föreläsning 13: Swing (GUI), händelser, timer

Lösningar till tentamen i EDAF25

GUI-programmering. Gustav Taxén Martin Berglund DH2640 Grafik och Interaktionsprogrammering VT 2008

Laboration 1 - Grunderna för OOP i Java

PROGRAMMERINGSTEKNIK TIN212

Design och konstruktion av grafiska gränssnitt

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Föreläsning 10. ADT:er och datastrukturer

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Lösningar till tentamen i EDAF25

Handboken / Programmering / Java

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Transkript:

Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015

Kursnämnd Namn kommer...

UML: Klassdiagram

UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation Riktad relation (har, känner till) Aggregat (har, består av) Komposition (-"-, äger)

UML: Relationsexempel

UML: Relationsexempel 2

Grafik Java har ett antal olika abstraktionsnivåer för att arbeta med grafik: Graphics - lågnivå, för att skapa bilder, figurer, effekter AWT (Abstract Window Toolkit) Platformsspecifik implementation av fönster och GUI-komponenter Swing - Plattformsoberoende högnivåversion av GUIkomponenter I denna kurs kommer vi främst att använda oss av Swinggränssnittet, men för vissa delar kommer vi att behöva arbeta direkt med de två andra

Swing Använder utseende och "känsla" från det omgivande systemet Fonter, fönsterramar och annat plockas t.ex från systemet Man kan t.ex välja att låta lägga menyerna högst upp på skrivbordet i stället för högst upp i fönstret. Det går även att välja ett "java-specifikt" utseende Det kan gå väldigt fort och enkelt att skapa ett GUI, eftersom alla vanliga beståndsdelar redan finns som färdiga mallar

Exempel på Swing-komponenter

Grafikhierarkier i Swing I Java skapas grafik som trädformade hierarkier I roten på varje träd finns en top-level container, som kan vara någon av: JFrame - ett fönster på skrivbordet som kan fyllas med godtyckligt innehåll JDialog - ett litet fönster som är kopplat till en applikation. Vanligaste subklassen är JOptionPane JApplet - ett grafiskt fönster som bäddas in i ett annat program, vanligtvis på en hemsida som visas i en webläsare

JFrame vs JDialog

Grafikhierarkier I Swing En top-level container innehåller: root pane, som innehåller layered pane, som innehåller (menu) content pane, som kan innehålla Diverse komponenter glass pane, som ligger utanpå andra komponenter

Grafikhierarkier (Swing) Som användare behöver man i många fall bara ha koll på sin top-level container och det innehåll man lägger i dess content pane.

Grafikhierarkier (Swing) Som användare behöver man i många fall bara ha koll på sin top-level container och det innehåll man lägger i dess content pane.

Grafikhierarkier (Swing) Som användare behöver man i många fall bara ha koll på sin top-level container och det innehåll man lägger i dess content pane.

Minimalt Swing-exempel import javax.swing.*; public class GrafikExempel extends JFrame{ public GrafikExempel(){ JLabel mytextlabel = new JLabel("Hello World"); add(mytextlabel); pack(); setvisible(true); } public static void main(string[] args){ GrafikExempel mygexempel = new GrafikExempel(); } }

Applets Applets är program som kan köras som en del av ett annat program, typiskt en webläsare. För att fungera måste en en applet ärva från klassen java.applet.applet, vilket t.ex JApplet gör En applet har ingen main(string[] args)-metod, utan motsvarande funktion fylls istället av init() För att kunna köras i en webbläsare (eller i appletviewer) måste en applet bäddas in i html: <applet code = MyApplet.class width = 200 height = 100></applet>

Minimalt Appletexempel import javax.swing.*; public class HelloApplet extends JApplet{ public void init(){ JLabel mytextlabel = new JLabel("Hello World!"); add(mytextlabel); setvisible(true); } }

Interaktiva komponenter I ett användargränssnitt vill man att användaren ska kunna göra olika saker - trycka på knappar, skriva in text eller flytta på skjutreglage - som programmet ska reagera på I Swing hittar vi t.ex JButton - en knapp man kan trycka på JRadioButton - knappar för att välja ett alternativ JCheckBox - knappar för att välja flera alternativ JSlider - ett skjutreglage för att välja ett numeriskt värde JTextField - ett fält där man kan skriva in en textrad JPasswordField - ett fält som döljer vad man skriver in JTextArea - ett fält där man kan skriva längre texter

Lyssnare För att få ett program att reagera på en interaktiv komponent behövs det en lyssnare Den interaktiva komponenten genererar en händelse (event) som gör att en viss metod i lyssnaren anropas Klassen som lyssnar måste implementera ett lyssnargränssnitt, vilket varierar med typen av interaktiv komponent. Ett objekt kan lyssna på flera andra objekt Flera objekt kan lyssna på samma objekt

Lyssnare Exempel: en lyssnare till en JButton måste implementera gränssnittet java.awt.event.actionlistener, och därmed tillhandahålla en metod som heter actionperformed(actionevent e) och som anropas när man trycker på knappen e ovan innehåller information om vilket objekt som skickade det Det finns många olika möjlighter för att bestämma vilket objekt som skall lyssna på ett annat, beslutet bör baseras på vad som ska hända när man trycker på knappen. T.ex kan det vara vettigt att låta det objekt som ska påverkas av knapptryckningen lyssna, eller att ha ett centralt debug-objekt som lysnar på alla knappar och skriver ut någon text på skärmen

Grafikhierarkier med lyssnare

Kodexempel Lyssnare public class MyListener implements ActionListener{ public void actionperformed(actionevent e){ System.out.println("Du tryckte på knappen!"); } } public class MyFrame extends JFrame{ public MyFrame(){ JButton mybutton = new JButton("Tryck mig!"); mybutton.addactionlistener(new MyListener());... // add(), pack(), etc } public static void main(string[] args){...} }

Javas API-dokumentation För att få specifik information om hur befintliga klasser I Java fungerar, kan man läsa API-dokumentationen För alla klasser finns här information om vilka paket de finns i, vilka gränssnitt de implementerar, vilka fält de har, vilka metoder de har och en kort beskrivning av hur man använder dem. Se: http://download.oracle.com/javase/7/docs/api/

Javadoc Med hjälp av JavaDoc kan man automatiskt skapa egen APIdokumentation Om vi skriver beskrivande kommentarer som kommer precis före en fält- eller metoddeklaration och som inleds med /** kommer detta att generera en förklarande text I dokumentationen. Från kommandoraden kan man anropa javadoc *.java för att skapa dokumentation för samtliga java-filer I NetBeans kan man högerklicka på ett kommando man har skrivit och välja "show JavaDoc" för att få upp ett fönster med dokumentation