F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Relevanta dokument
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

F4. programmeringsteknik och Matlab

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

TDDC77 Objektorienterad Programmering

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Programmering A. Johan Eliasson

OOP Objekt-orienterad programmering

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Föreläsning 2 - Intro till Java

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

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

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

SMD 134 Objektorienterad programmering

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Klassdeklaration. Metoddeklaration. Parameteröverföring

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Språkkonventioner och redigering av tal.

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

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

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 3: Booleans, if, switch

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Enkla datatyper minne

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 3-4 Innehåll

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

TENTAMEN OOP

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

OOP Objekt-orienterad programmering

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

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

TDIU01 - Programmering i C++, grundkurs

Tentamen , Introduktion till Java, dtaa98, dtea53

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

Översikt Introduktion DST 1. Nicholas Wickström. IDE, Högskolan i Halmstad. N. Wickström

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

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Objekt-orienterad programmering

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering i Java

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

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

Programmering för språkteknologer I, VT2012. Rum

Föreläsning 8: Exempel och problemlösning

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

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

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

SMD 134 Objektorienterad programmering

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

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

Att skriva till och läsa från terminalfönstret

Tentamen OOP

Föreläsning 1 & 2 INTRODUKTION

Tentamen FYTA11 Javaprogrammering

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

TENTAMEN OOP

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

Objektorienterad programmering i Java

TENTAMEN OOP

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

Tentamen Programmering fortsättningskurs DIT950

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Classes och Interfaces, Objects och References, Initialization

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Transkript:

F1 - Introduktion ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se

Viktiga resurser Java Software Solutions, Lewis & Loftus, sjätte eller sjunde upplagan kth.se/social meddelanden, frågor bilda.kth.se inlämningsuppgiften Daisy (http://daisy.ict.kth.se) div adm. Kursansvarig: Fredrik Kilander, fki@kth.se Bengt Koren (handledning)

Programmera Ge datorn instruktioner Instruktionerna skrivs i något språk FORTRAN, COBOL, LISP, Haskell, Python, Java, C, C++, Ada, C#, Pascal, Prolog Inget språk är bäst på allt Val av språk beror ofta på: vad programmet ska göra vad man redan kan vad som finns tillgängligt vad chefen har bestämt

Olika programvarukategorier Användarprogram Middleware (förser vissa användarprogram med funktionalitet) User mode Supervisor mode Operativsystem (hanterar datorns resurser) Drivrutiner (OS kringutrustning)

Digitaliserad data Allting representeras av tal Ljud samples Bild pixlar Text teckenkoder Heltal, flyttal, stora tal

Digitaliserad signal 127 25 54 61 59 54-128 Varje sample motsvarar ett ögonblicks provtagning. Om insignalen är bandbreddsbegränsad f < S/2 så går alla frekvenser att fånga och rekonstruera.

Digitaliserad bild 0x001055 0x000000 0x004055 Provtagning i två dimensioner, med tre färgkanaler i varje mätpunkt.

Binära tal Datorns minne och register hanterar bitar Bit = binary digit, 0 eller 1 Man har bara två siffror Decimalt Binärt 0 0 1 1 2 10 3 11 4 100

Antal bitar och ordlängd Varje minnescell eller register i datorn har en begränsad ordlängd (antal bitar) Ofta delas denna upp i mindre delar, eller kombineras till längre enheter int, float char, short 32 bitar 16 bitar 16 bitar byte 8 bitar 8 bitar 8 bitar 8 bitar long, double 32 bitar 32 bitar

Antalet bitar bestämmer antalet värden Ett fält med n bitar, kan representera 2 n olika värden. n 2 n Exempel 1 2 1 =2 0,1 8 2 8 =256-128 127, 0 255 16 2 16 =65 536 0 65 535 32 2 32 =4 294 967 296 4 Gbyte

Datorns delar CPU Main memory Bus Disc controller Discs Video controller Screens Serial port Serial peripheral controller USB ports Keyboard Mouse Memory stick 3G modem Game controller Video camera

CPU och minne CPU Cache Cache Memory manager Physical memory

Programmeringsspråket Java Skapat 1990-1995 vid Sun Microsystems Version 1.0, 1996 Version 1.1, 1997 Version 1.2, 1998 Version 1.3, 2000 Version 1.4, 2002 Version 5, 2004 Version 6, 2006 Oracle köper Sun Microsystems, 2009 Version 7, Juli 2011 Version 8, sommaren 2013 Version 9,?

Java programutveckling och exekvering Skriva källkod Kompilera Bytekod Exekvera bytekod i Java Virtual Machine Foo.java javac Foo.class java codebase Kodbasen innehåller klasser som behövs vid körningen, t ex standardbibliotek.

Java vs operativsystem och dator Java Virtual Machine Foo.class Bytekodstolk JIT-kompilator Anpassning till OS och arkitektur codebase Operativsystem Filer, grafik, ljud, m.m.

Java vs operativsystem och dator Java Virtual Machine Foo.class Bytekodstolk JIT-kompilator Anpassning till OS och arkitektur codebase JVM implementerar en virtuell (abstrakt) dator som alltid är densamma. Operativsystem Det gör att samma class-filer kan flyttas mellan olika fysiska datorer utan att kompileras om. JIT (just-in-time) översätter automatiskt delar av bytekoden till lokala maskininstruktioner för snabbare exekvering. Filer, grafik, ljud, m.m.

Ett enkelt Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one.");

Ett enkelt Javaprogram Kommentarer //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one.");

Ett enkelt Javaprogram Klassen och källkodsfilen har samma namn! //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one.");

Ett enkelt Javaprogram Reserverade ord (kan inte användas till annat) //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one.");

Ett enkelt Javaprogram Identifierare valda av programmeraren //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one.");

Ett enkelt Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one."); Klass, variabel och metod ur standardbiblioteket

Ett enkelt Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one."); Programmet startar alltid i metoden main.

Kommentarer /* */ Kommentarstext på flera rader /* * Kommentarstext på flera rader */ Dessa är syntaktiskt identiska /* Kommentar mitt i en rad */ // Kommentar till slutet av raden Lägg märke till dubbelasterisken! /** * JavaDoc-kommentar */ JavaDoc är ett verktyg för att generera dokumentation direkt ur källkoden. Kommentaren står alltid omedelbart före det som kommenteras.

Kommentarer Kommentarer i källkod är precis lika viktiga som koden. Kommentera syfte, avsikt, funktion, mening, användning.

Kommentarer och indentering är för människor Kommentarer gör koden mer förståelig för människor Indentering (formatering) av koden gör den mer läslig för människor Kompilatorn bryr sig inte om kommentarer och tomrum. public class Lincoln{public static void main(string[] args){ System.out.println("A quote by Abraham Lincoln:"); System. out.println("whatever you are, be a good one.");

Kommentarer och indentering Skriv källkod som om den vore ett exempel Lita inte på det egna minnet När koden ändras, ändra kommentarerna med!

Kommentarer nofitem = scan.nextint(); // Läs en int scan.nextline(); // Läs raden nofitems = scan.nextint(); // Läs önskat antal scan.nextline(); // Hoppa över resten av raden Vilket exempel är bäst? Varför?

Kommentarer och identifierare public int bestest (int a, int b) {return (a>b)?a:b; /** * Returns the higher of two integer values. * @param a The first value * @param b The second value * @return The greater of the two values. */ public int max (int a, int b) { return (a > b)? a : b;

Kommentarer och identifierare public int bestest (int a, int b) {return (a>b)?a:b; Luddigt valt namn /** * Returns the higher of two integer values. * @param a The first value * @param b The second value * @return The greater of the two values. */ public int max (int a, int b) { return (a > b)? a : b;

Identifierare Identifierare används för att ge namn åt klasser, variabler och metoder Reserverade ord kan inte användas som identifierare Stor och liten bokstav är OLIKA i Java P1, p1, p_1 getelement, GetElement, getelement, GET_ELEMENT Dessa är alla olika och unika

Identifierare Halva jobbet med att programmera är att hitta på bra namn på identiferare Stavningskonventioner underlättar att känna igen vad identifieraren används till TT_WORD, COLOR_BLACK Lincoln, System main, i, nextinteger() Konstanter, stor bokstav, underscore Klasser, stor begynnelsebokstav Variabler, metoder, liten begynnelsebokstav

Traditionella identifierare i, j, k index i arrayer, strängar, samlingar (heltal) n antal (heltal) a, b, u, v, w storheter, faktorer, tal e element (i mängd) p punkt i koordinatsystem s, t - strängar x, y, z - koordinater

Java reserverade ord abstract continue for new switch assert *** default goto * package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum **** instanceof return transient catch extends int short try char final interface static void class finally long strictfp ** volatile const * float native super while * not used ** added in 1.2 *** added in 1.4 **** added in 5.0

Java reserverade ord primitiva datatyper abstract continue for new switch assert *** default goto * package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum **** instanceof return transient catch extends int short try char final interface static void class finally long strictfp ** volatile const * float native super while * not used ** added in 1.2 *** added in 1.4 **** added in 5.0

Java reserverade ord ofta använda abstract continue for new switch assert *** default goto * package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum **** instanceof return transient catch extends int short try char final interface static void class finally long strictfp ** volatile const * float native super while * not used ** added in 1.2 *** added in 1.4 **** added in 5.0

Java reserverade ord ibland använda abstract continue for new switch assert *** default goto * package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum **** instanceof return transient catch extends int short try char final interface static void class finally long strictfp ** volatile const * float native super while * not used ** added in 1.2 *** added in 1.4 **** added in 5.0

Java reserverade ord sällan använda abstract continue for new switch assert *** default goto * package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum **** instanceof return transient catch extends int short try char final interface static void class finally long strictfp ** volatile const * float native super while * not used ** added in 1.2 *** added in 1.4 **** added in 5.0

Objektorienterad programmering Bryt ner uppgiften i mindre delar Låt delarna samverka på väldefinierade sätt Välj eller konstruera lämpliga LEGO-bitar Sätt samman bitarna till en lösning Välj eller definiera lämpliga klasser Skapa instanser ur klasserna och anropa metoder

Viktiga objektorienterade begrepp Klass definierar data och metoder Metod namngiven enhet med programkod (kallas i andra språk funktion, procedur) Objekt en instans av en klass, tar plats Metodanrop kör koden i en viss metod

Ett enkelt objektorienterat Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { public void printquote() { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one."); //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { Lincoln abe = new Lincoln(); abe.printquote();

Klass Ett enkelt objektorienterat Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { public void printquote() { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one."); //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { Lincoln abe = new Lincoln(); abe.printquote();

Ett enkelt objektorienterat Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { public void printquote() { System.out.println ("A quote by Abraham Lincoln:"); Metod System.out.println ("Whatever you are, be a good one."); //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { Lincoln abe = new Lincoln(); abe.printquote();

Ett enkelt objektorienterat Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { public void printquote() { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one."); //----------------------------------------------------------------- // Prints Skapar a presidential ny instans quote. av klassen //----------------------------------------------------------------- public static void main (String[] args) { Lincoln abe = new Lincoln(); abe.printquote();

Ett enkelt objektorienterat Javaprogram //******************************************************************** // Lincoln.java Author: Lewis/Loftus // Demonstrates the basic structure of a Java application. //******************************************************************** public class Lincoln { public void printquote() { System.out.println ("A quote by Abraham Lincoln:"); System.out.println ("Whatever you are, be a good one."); //----------------------------------------------------------------- // Prints a presidential quote. //----------------------------------------------------------------- public static void main (String[] args) { Lincoln abe = new Lincoln(); abe.printquote(); Metodanrop

Programmering är bara en del... Problem Lösningsidé Systemdesign Komponentdesign Programmering Testning

Programmering är bara en del... Skriva källkod Syntaxfel Körfel Logiska fel Programmera Kompilera Testa 1=2?

F1 INGA FLER BILDER