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

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

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

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

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

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

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

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

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

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

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

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

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

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

Laboration 15 Grafiskt användargränssnitt

Lektion Händelsehanterare

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Mer om grafiska komponenter. Händelsestyrda program

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

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

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

Lab5 för prgmedcl04 Grafik

DAT043 - Föreläsning 7

Laboration 1 - Grunderna för OOP i Java

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Projekt 2 XL. Observer-mönstret

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

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

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

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

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

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

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

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

OOP Objekt-orienterad programmering

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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

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

Föreläsning 15: Repetition DVGA02

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

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

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

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

OOP Objekt-orienterad programmering

Tentamen i Objektorienterad programmering

DAT043 - föreläsning 8

Arv och Grafiska Användargränssnitt

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

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

Java-concept och Swing. Swing low, sweet chariot

Ett objekt... Exempel: Om ni tittar er runt i föreläsningssalen ser in många olika fysiska föremål:

Grafiska komponenter.

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Klasshierarkier - repetition

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

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

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

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

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

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

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

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.

Grafiska användargränssnitt i Java

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Lösningar för tenta 3 DAT043,

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Laboration 3 GUI-programmering

Laboration 24 Databasen MySQL och java

Handboken / Programmering / Java

Objektorienterad Programmering (TDDC77)

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 14: Grafik & mera händelsehantering

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

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

JAVA Mer om klasser och objektorientering

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

Laboration 3, uppgift En klass för en räknare

PROGRAMMERINGSTEKNIK TIN212

Transkript:

Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016

Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik instans av klassen. Klassvariabler och klassmetoder laddas in tillsammans med klassen när man startar JVM, och kräver inte att några objekt har instansierats.

När bör man använda klassmetoder/-fält? Egenskaper som är gemensamma för alla objekt ex: räknare för antalet instanser Konstanter (kan deklareras static final för att förhindra att de ändras av misstag) ex: Math.PI, Math.E Metoder som utför operationer med primitiva variabler ex: Math.cos(double a), Math.round(double a) Metoder som fungerar oberoende av om objekt av en viss klass har skapats ex: Map.convertKmToMiles(double km)

Klass eller instans? Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik instans av klassen (ett objekt) Instansmetoder kan komma åt instansvariabler och -metoder direkt Instansmetoder kan komma åt klassvariabler och -metoder direkt Klassmetoder kan komma åt klassvariabler och -metoder direkt men Klassmetoder kan inte komma åt instansvariabler och -metoder direkt

Klass/instans, exempel public class Exempel{ public class FelaktigtExempel{ private int a = 5; static int b = 3; public int geta(){ return a; public int getb(){ return b; // OBS! denna kod är // felaktig!! private int a = 5; static int b = 3; public static int geta(){ return a; public static int getstatb(){ return b; non-static variable a cannot be referenced from a static context

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 På Mac kan man 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