ID1004 Objektorienterad programmering Fredrik Kilander

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
INTRODUKTION TILL PROGRAMMERING
F2 - Intro till Java1 Föreläsning 2 - Intro till Java  Sammanfattning av Lektion 1 (kap 2): • Vad behövs för att kunna programmera? • DrJava • Java •
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Klassarv och inkapsling
Metoder i java Det finns två typer av metoder i java
Om Java C =>Java syntax variabler metoder färdiga klasser
Polymorfism.
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
IT för personligt arbete F6
OOP Objekt-orienterad programmering
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 3, torsdag 7 feb. kl Del 1. Klasser, objekt, metoder, konstruktorer, samlingar och tillstånd. Hur.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Programmeringsteknik för Media1 & K1
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
Objektorientering.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 Föreläsning 5 Programmeringsteknik och Matlab 2D1312/2D1305 Repetition Metoder Array API och klassen ArrayList.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
1. Ett problem/uppgift.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
INTRODUKTION TILL PROGRAMMERING
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Central-enhet PM CPU BIOS Skiv- minne Sekundär- minnes- enheter (SM)
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Programmeringsteknik för K och Media
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se 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) Operativsystem (hanterar datorns resurser) Drivrutiner (OS  kringutrustning) User mode Supervisor mode

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

Digitaliserad signal 127 61 59 54 54 25 -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 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 32 bitar 16 bitar 8 bitar int, float char, short byte long, double

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

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

CPU och minne CPU Physical memory Cache Memory manager Cache

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 Foo.class javac 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 Operativsystem JVM implementerar en virtuell (abstrakt) dator som alltid är densamma. 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 */ /* 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!

A B Kommentarer Vilket exempel är bäst? Varför? nofItem = scan.nextInt(); // Läs en int scan.nextLine(); // Läs raden B 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 Konstanter, stor bokstav, underscore Lincoln, System Klasser, stor begynnelsebokstav main, i, nextInteger() 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();

Ett enkelt objektorienterat Javaprogram Klass //******************************************************************** // 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:"); 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(); 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(); Skapar ny instans av klassen

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 Komponent-design Programmering Testning

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

F1 – INGA Fler bilder