Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME



Relevanta dokument
Instuderingsfrågor och övningar

Objektorienterad programmering

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

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

Lab5 för prgmedcl04 Grafik

Föreläsning 7. Grafiska användargränssnitt

Projektarbete 2: Interaktiv prototyp

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

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Objektorienterad 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 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Malmö högskola Lärarutbildningen SÄL III:2. Examensarbete 15 poäng. Mathias Fredriksson. Mobiltelefonbaserad kommunikation i gymnasieskolan.

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

Åtkomst och användarhandledning

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

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

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

Redovisning av inlämningsuppgifter

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

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

Föreläsning 3.1: Datastrukturer, en översikt

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

Projektrapport EDA095

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

Programmering för språkteknologer II, HT2014. Rum

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

MyDOF och Wireless Java

Programmering A. Johan Eliasson

DAT043 - föreläsning 8

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

Introduktion till arv

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Inlämningsuppgift 2. DA156A - Introduktion till webbutveckling Teknik och samhälle, Malmö högskola Oktober 2012

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

OOP Objekt-orienterad programmering

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

ANVÄNDARMANUAL HUR INSTALLERA JAG MOBILEPASS PÅ MIN TELEFON ELLER WINDOWS DATOR

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

Tentaupplägg denna gång

Tentamen TEN1 HI

Att använda pekare i. C-kod

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

Designspecifikation den 13 december 2007

Modern företagstelefoni Förenkla och förbättra er kommunikation

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Att använda Java SE JDK 6

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Editering, Kompilering och Exekvering av Javaprogram

Installations- och bruksanvisning för Gree Smart app: Hansol -seriens luftvärmepump med WiFi

NXT LEGO-robot laboration Programmering och felsökning av en LEGOrobot

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

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

Laboration 3 GUI-programmering

Tentamen i Realtidsprogrammering

Hidden Camera App. Realtidsprogrammering EDA040. Joakim Svensson (dt05js8) Torbjörn Lundberg (dt05tl3) Henrik Andersson (dt05ha1)

F5 Introduktion till digitalteknik

Tentamen i Objektorienterad programmering

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

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

Classes och Interfaces, Objects och References, Initialization

Systemvetarutbildningen och dataekonomutbildningen

Redogörelse för utvecklingsprocessen av spelet The Legend of Chalmers

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

Objektsamlingar i Java

Installationsanvisning för kursens programvara på egen dator

Grafiska komponenter.

Distribuerade System, HT03

App-klient för smartphones Power BI Arbetsflöde CRM Online Webb-klienten Dokumenthantering Molnet...

DAT043 - Föreläsning 7

Objektorienterad programmering D2

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

Laboration 10 - NetBeans

Laboration 2: Ett kommunikationssystem

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

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

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

Request For Information (RFI)

Chapter 3: Using Classes and Objects

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

HexaFlip. Kravspecifikation

Övningar Dag 2 En första klass

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Tentamen OOP

Händelsestyrda program

Programmeringsuppgifter 1

Tentaupplägg denna gång

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Transkript:

Johan Eliasson Tentan 12/1 9-12 i skrivsal 7 östra paviljongen (om de inte flyttat den till ngn annan lokal) Förklara begrepp Ex: Vad är en tråd? Vad gör en LayoutManager? Hur fungerar Observer-Observable designmönstret? Vad är en Servlet och när används den Trådsäkerhet Ni bör kunna avgöra och ev fixa brister i ett trådat program Inga egentliga större programmeringsuppgifter Kom ihåg att anmäla er (gör det på en gång så att ni inte glömmer det) Frågor? Muntliga redovisningen 14-17 (salen är bokad från 13:00 och jag kommer att se till så att dator och projektor finns tillgänglig från 13:15) 15-20 min per grupp På engelska om ni vill Meritportföljskursen: verkar inte längre vara aktuell för denna redovisning. Frågor? Johan Eliasson Mobila applikationer Mobil applikationer Java ME Att tänka på Begränsad prestanda Begränsad mängd minne Begränsad skärmstorlek Begränsade möjligheter till interaktion Programmen används ofta kort tid 525 526 Grunderna i ME En konfiguration tillhandahåller den viktigaste delmängden av paket/klasser och egenskaper för den virtuella maskinen för ett stort antal apparater, En profil är ett API för en mindre mängd apparater Dessutom finns valfria paket för specifika teknologier (bluetooth etc). Konfigurationer Java ME plattformen har delats in i två baskonfigurationer, en för mobiltelefoner och liknande, och en inriktad mot mer avancerade mobila apparater som smart-phones och set top boxes. Konfiguration för begränsade apparater kallas Connected Limited Device Configration (CLDC) Den mer kapabla konfigurationen kallas Connected Device Configuration (CDC). 527 528

CLDC Konfigurationen för apparater med begränsad kapacitet som tex mobiltelefoner kallas Connected Limited Device Configuration (CLDC). Den är specifikt designad för att möta behovet av att köra Java på apparater med begränsat minne, processorkraft och begränsad skärmstorlek. Minimum 160 KB ROM och 32 KB RAM Någon form av nätverksuppkoppling som fömodligen är rätt begränsad och långsam CLDC versioner 1.0 Inget stöd för flyttalsdatatyper (float, double). Man måste använda fixpunktsdatatyper (i form av klasser istället) 1.1 Introducerar bla flyttalsdatatyper Bakåtkompatibel med 1.0 529 530 CLDC och profiler Hur hänger det ihop Ovanpå de olika konfigurationerna specificerar JavaME plattformen också ett antal profiler med ytterligare paket/klasser som man också kan använda sig av. Vanligt är att man kombinerar CLDC med Mobile Information Device Profile (MIDP) för att tillhandahålla en komplett Java programmiljö for mobiltelefoner och liknande apparater. Utifrån konfigurationen och profilen definierar vi senare våra program. 531 532 MIDP MIDP MIDP (Mobile Information Device Profile) är JavaME:s stöd för att utveckla mobiltelefon-användargränssnitt. MIDP tillhandahåller ett Java API (känt som LCDUI), som har funktionalitet liknande den hos Java Abstract Windows Toolkit (AWT) och Swing för vanliga datorer. 533 High level API Tillhandahåller ett antal användarggränssnittsklasser för grundläggande UI komponenter på en relativt hög abstraktionsnivå Low level API Ger utvecklare kontroll över hela skärmen Möjlighet att rita på varje enskild pixel om man skulle vilja det Rita grundläggande geometriska figurer Samt möjlighet att rita text med olika fonter 534 mm.

Viktiga klasser MIDlet En MIDlet kräver en apparat som implementerar Java ME, MIDP för att köras. Liksom andra java program är det möjligt att kompilera MIDlets en gång och sedan köra dem på olika plattformar. MIDlet distributioner består också av en.jad-fil som beskriver innehållet i JAR-filen (innehåller delvis samma information som manifest filen i jar-filen). 535 536 Display En MIDlet måste uppfylla följande krav för att kunna köras på en mobiltelefon: Huvudklassen måste vara en subklass av javax.microedition.midlet.midlet MIDlet:en behöver vara hoppackad i en jar-fil Jar-filen behöver preverifieras mha en preverifier. Verifieringen av klasser sköts i vanliga java av virtuella maskinen, men detta kräver rätt mkt resurser. Ibland kan jar-filen behöva signeras 537 MIDlets kan antingen vara rena bakgrundsapplikationer eller applikationer som interagerar med användaren. En MIDlet kan komma åt dess display genom en instans av Display klassen. Denna instans får man tag på genom att anropa Display.getDisplay (MIDlet) (statisk metod). Som parameter skickar man en referens till MIDlet:en och tillbaka får man ett Displayobjekt Display-klassen och de andra användargränssnittsklasserna i MIDP finns i paketet javax.microedition.lcdui. 538 Display forts. Display-klassen har en metod setcurrent() som specificerar vilket innehåll som ska visas på skärmen. Det är inte nödvändigtvis så att skärmen uppdateras omedelbart efter anropet. Skillnaden mellan Display och Displayable är att Display-klassen representerar skärm hårdvaran medans Displayable är något som kan visas på skärmen. MIDlet:en kan anropa metoden isshown() i Displayable för att avgöra om innehållet verkligen ska visas på skärmen. Screen Form Viktigaste subklassen till Screen. Kan innehålla ett godtyckligt antal Items Alert Möjlighet att visa en dialog under en viss tid, eller tills användaren bekräftar meddelandet. Har en titel. Kan även ha en innehållssträng och bild. List En lista där en eller flera värden kan vara valda TextBox Textinmatning. Liknande TextField, men kan vara flera rader 539 540

Items ChoiceGroup Samling av radiobuttons eller checkboxes TextField För att mata in en rad med text (eller siffror). Finns möjlighet att begränsa vad som kan matas in och att inte visa upp vad som skrivits in (tex för lösenord) StringItem För att visa en sträng. Kan endast ändras av programmet ImageItem För att visa upp en bild. Det enda bildformatet som Items forts. Gauge Grafisk representation av ett värde. Kan antingen vara interaktiv (alltså tillåta användaren att ändra värdet) eller inte. DateField För att mata in datum och/eller tider måste stödjas är.png 541 542 Händelser Det finns två olika typer Command och Item Command-händelser svarar mot kommandon (soft buttons) som man kan lägga till till sin applikation Item-händelser uppstår då användaren förändrar värden i de lika typerna av komponenter (som kan få sina värden ändrade) Command-händelser Tre grundsteg Skapa ett Command-objekt Lägg till det till en Form, TextBox, List eller Canvas Sätt en en lyssnare (som implementerar interfacet ItemCommandListener) till att lyssna efter händelsen Då händelsen inträffar anropas metoden public void commandaction(command c, Displayable s) hos lyssnaren. I denna metod så kan man via den Command-referens som skickas avgöra vilket Command-objekt som genererade händelsen, och hantera detta på det sätt man vill i sitt program 543 544 Command-händelser Skapa Command-objektet exitcmd = new Command("Exit", Command.EXIT,0); Lägg till det mform.addcommand(exitcmd); Lägg till lyssnare mform.setcommandlistener(this); Command-händelser för Items Även Items kan ha Command:s associerade med sig. Dessa kommer vara tillgängliga endast då det Itemobjektet är valt Command-objektet läggs till mha addcommand i Item-klassen En lyssnare måste registreras mha setitemcommandlistener(itemcommandlistener l) hos Item-objektet Och när händelsen inträffar anropas commandaction(command c, Item item) hos lyssnaren 545 546

Item-händelser Item händelser genereras då värdet på Items ändas. Registrera en lyssnare på händelsen genom att lägga till en lyssnare i Form-objektet som visar komponenten mha metoden setitemstatelistener (ItemStateListener ilistener) i Form. Då händelsen inträffas anropas metoden itemstatechanged(item item) hos lyssnaren. Mha Item-referensen kan man avgöra vilket Item som genererade händelsen (och tex kolla Item:ets värde) UI med lite lägre abstraktionsnivå Ibland räcker inte klasserna som vi tittat på hittills inte riktigt till för allt man vill kunna göra Vi vill själv kunna styra lite mer detaljerat hur våra program ska se ut och vad som ska hända då användaren interagerar med vårt program 547 548 Canvas Canvas-klassen är en basklass för att skriva program som behöver hantera lågnivåhändelser och rita på displayen. Abstrakt klass=> vi måste ärva från den och omdefiniera den abstrakta metoden public void paint(graphics g) För att begära att Canvas:en ska ritas om anropas metoden repaint() Kan sättas i helskärmsläge mha setfullscreenmode(boolean mode) Graphics javax.microedition.lcdui.graphics Klass för att rita på tex Canvasens rityta Lite mer primitiv än Graphics i AWT Ett Graphics-objekt fås som parameter till paintmetoden Metoder för att rita linjer, geometriska figurer, text (i olika fonter) Vi kan ställa in i vilken färg saker ska ritas mha metoderna setcolor (ingen Color-klass finns i ME utan man får jobba mha int:s istället) 549 550 Lågnivåhändelser i Canvas Canvas har ett antal metoder som anropas vid olika lågnivåhändelser och som kan omdefinieras till att utföra det man vill ska inträffa vid händelsen. shownotify() hidenotify() keypressed(int keycode) keyrepeated(int keycode) keyreleased(int keycode) pointerpressed(int x,int y) pointerdragged(int x,int y) pointerreleased(int x,int y) Till key metoderna skickas en int som svarar mot unicode värdet för motsvarande tecken (konstanter finns i klassen för de vanligaste) om sådant finns, eller ett negativt värde för andra tecken Trådsäkerhet Finns en Thread klass i JavaME. Varianten i CLDC är lite mer primitiv än den i JavaSE Till skillnad från swing så är LCDUI klasserna trådsäkra. För övrig tråd interaktion kan vi använda synchronized som vanligt 551 552

Android Också javabaserat Har egna api:er dvs använder ej JavaME Ger möjlighet till mer avancerade gränssnitt och mer komplicerad interaktion. 553