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

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

TDDD78 / 729A85 Objektorienterad programmering och Java. Kursinformation Java: Varifrån och varför? Java för Pythonprogrammerare

TDDD78 / 729A85 Objektorienterad programmering och Java

TDDD78 / 729A85 Objektorienterad programmering och Java

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

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

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

Mer Java 2015

(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

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

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

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

Objektorienterad Programmering (TDDC77)

Introduktion till programmering. Programspråk och paradigmer

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

Variabler, värden och typer

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

Variabler, värden och typer

OOP Objekt-orienterad programmering

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

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 & 2 INTRODUKTION

TDIU01 - Programmering i C++, grundkurs

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

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

Objektorientering: Lagring, räckvidd och livstid

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Objektorienterad Programmering DAT043. Föreläsning 1 15/1-18 Moa Johansson

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

Programmering A. Johan Eliasson

Anteckningar 1: Grundläggande saker

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

SMD 134 Objektorienterad programmering

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 1 & 2 INTRODUKTION

Objektorientering: Lagring och livstid

Program & programmering

F4. programmeringsteknik och Matlab

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Objektorienterad programmering i Java

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

Backcode. Jonathan Crusoe TDP019 Projekt: Datorspråk Linköpings universitet

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

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

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

Imperativ programmering

Föreläsning 6: Metoder och fält (arrays)

TDDC77 Objektorienterad Programmering

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Imperativ programmering. Föreläsning 2

Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:

Tentamen OOP

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

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

TDP002 - Imperativ programmering

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

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

Föreläsning 4: for, while, do-while

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

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

1 Funktioner och procedurell abstraktion

OOP Tentamen

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

TDP002 Imperativ programmering

Omprov 11/11. på förmiddagen.

OBS! All teori i detta och följande dokument kompletteras med genomgångar på lektionerna. Så det är viktigt att närvara och göra egna anteckningar.

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

Imperativ programmering. Föreläsning 4

Planering Programmering grundkurs HI1024 HT TIDAA

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

TDP002 - Imperativ programmering

Planering Programmering grundkurs HI1024 HT 2014

Inledande programmering med C# (1DV402) Introduktion till C#

OOP Objekt-orienterad programmering

TDDC77 Objektorienterad Programmering

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

Programmeringsteknik med C och Matlab

TDDD78 Objektorientering: Lagring och livstid

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

Innehållsförteckning

OOP Objekt-orienterad programmering

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

Planering av ett större program, del 2 - for och listor. Linda Mannila

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

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

Introduktion till programmering och Python Grundkurs i programmering med Python

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Transkript:

TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Introduktion till Java -- för Pythonprogrammerare

Historia: C, C++ 3

Historia: Oak 1 4 1990: Sun Microsystems påbörjade projekt StarSeven Avancerad interaktiv multikontroll : TV, video, satellit, Touchskärm, dra program i listan till en video, Trådlöst nätverk Unix-OS

Historia: Oak 2 5 Ville ha ett objektorienterat programmeringsspråk C++ sågs som problematiskt James Gosling utvecklade sitt eget: "C++ ++ " Omdöpt till "Oak" 1991 1994: Skapa spinoff-företag Bygga, programmera, demonstrera Gå i konkurs

Historia: Oak 3 6 Hitta en annan användning! 1994: WWW på gång Nov 1993: 500 WWW-servrar! Okt 1994: Netscape Mosaic 0.9! Webben var väldigt statisk Interaktivitet? Formulär! JavaScript? Slutet av 1995 Flash? 1996 Oak passade perfekt! Portabelt, plattformsoberoende Bra stöd för nätverkskommunikation Språket döptes om till Java Många arv kvar från C++, C, till och med B (1969)

Varför Java? 7 Varför Java, när det finns så många OO-språk? Rena OO-språk (allt är objekt) Scala, Smalltalk, Eiffel, Ruby, JADE, Emerald, OO-språk med vissa procedurella aspekter Java, C++, C#, Python, VB.NET, Procedurella språk med OO-utökningar Fortran 2003, Perl, COBOL 2002, PHP, ABAP, Objektorientering kan också kombineras med andra paradigm! Haskell++ (t.ex.) är funktionellt + OO

Inte Python igen: Behöver behöver breda kunskaper, skilda perspektiv! Lär dig åtminstone ett halvt dussin olika programmeringsspråk. Peter Norvig (2001): Teach Yourself Programming in Ten Years, http://norvig.com/21-days.html Vanligt: #1 på TIOBE index #2 på GitHub och RedMonk (efter JavaScript) Språk: Varför Java? Stilen liknar andra viktiga språk: C, C++, C#, (PHP, Javascript, ) Medelkomplexitet: Mer att tänka på än Python, mindre att lära än C++/ Passar till undervisning: Färre fallgropar än vissa språk, bra utvecklingsmiljöer, bra grundbibliotek av kod/klasser,

Många nya begrepp, mycket ny syntax 10 Python: Kan börja med enskilda uttryck (2+2), satser (print ) HelloWorld.py Java kräver OO: All kod är i en klass, alla satser i en metod (funktion) HelloWorld.java Kod på toppnivå körs när man "kör filen" Enkel uppgift enkel kod main() startas när man "kör klassen" Mer "overhead" runtomkring Märks mindre i större program! klass = class metod = method Kan inte förklara allt på en gång! Acceptera class, static, tills vidare förklaras mer senare

Interaktivitet (1) 11 Python kan köras med kod sparad i en fil

Interaktivitet (2) 12 eller i interaktivt läge

Interaktivitet (3) 13 Java har inget interaktivt läge! Skriv alltid kod i en fil Fil: Newton.java

Interaktivitet (4): Explicit kompilering 14 Java har explicit kompilering ett extra steg Vid utveckling Källkod i Java (text): Newton.java Kompilator: javac Newton.java Bytekod (binärt mellanformat): Newton.class Standardiserat, kan distribueras Vid körning Bytekod (binärt mellanformat): Newton.class Standardiserat, kan distribueras Virtuell maskin: java Newton

Interaktivitet (5) 15 Nära samband Ingen interaktiv prompt Explicit kompilering Ingen programkod på toppnivån

Syntax: Kommentarer 17 Fil: Newton.py Fil: Newton.java

Syntax: Kod i klasser 18 Fil: Newton.py Fil: Newton.java All kod måste ligga i en klass Det som ingår i klassen läggs inom { } (Java bryr sig inte om indentering!) Namnstandard för klasser: VarjeOrdHarStorBokstav JavaTest, ArrayList, Unicode kan använda å, Θ Σ Я Ỡ

Syntax: Funktioner 19 Fil: Newton.py Fil: Newton.java Just nu vill vi inte använda objekt Ändå måste metoder vara inuti klasser public vem som helst får använda static behöver inget objekt av typen Newton ("vanlig funktion, inte objektorienterad") void returnerar inget värde (procedur)

Syntax: Klamrar 20 Fil: Newton.py Fil: Newton.java Klamrar runt metodens kod: { } Namnstandard: storbokstavutomförstaordet

Syntax: Strängar, utskrifter 21 Fil: Newton.py Fil: Newton.java Python-strängar: "Hello" eller 'Hello' Jämförelse: str1 == str2 Java-strängar: "Hello" Jämförelse: str1.equals(str2) Apostrofer kan användas för enskilda tecken: 'H'

Syntax: Semikolon, indentering 22 Fil: Newton.py Fil: Newton.java Utskrift är en metod, "println", i ett objekt, "System.out" Mer info senare! Semikolon efter satser Radbrytning räcker inte! Vi indenterar för läsbarhet Ignoreras av språket

Inmatning 23 Fil: Newton.py Fil: Newton.java Java är mindre anpassat för "textprogram" Enklare att visa en dialogruta (kommer på labben)

Deklarera variabler 24 Fil: Newton.py Fil: Newton.java Va? Det kan väl datorn fatta själv? Ja, men tänk om du skriver guss nästa gång. Mer att skriva men extra säkerhetsbälte. Va? Det kan väl datorn fatta själv? Delvis, men det har också nackdelar. Vi återkommer till typning nästa gång! Variabler måste deklareras: "Här kommer en ny variabel" (annars säger kompilatorn att "guess finns inte") Java har explicit typning: Ange alltid vilken typ en variabel ska ha (double = "decimaltal") deklarera = declare

Namnstandard 25 Fil: Newton.py Fil: Newton.java Namnstandard: storbokstavutomförstaordet

Loop över heltal 26 Fil: Newton.py Fil: Newton.java Heltalstyp: int Annan loopsyntax: (start; villkor; steg) Deklarera heltal i = 0 Så länge som i < 5 { Utför "kroppen" av loopen i++ (öka värdet på i) }

Loop med klamrar 27 Fil: Newton.py Fil: Newton.java Loopens kropp läggs också inom klamrar { } Efter klamrar: Inget semikolon

Tilldelning och uttryck 28 Fil: Newton.py Fil: Newton.java Nu är guess redan deklarerad! Många operatorer liknar Python

Referens: Operatorer i Python och Java 29 Python Java

Mera utskrifter 30 Fil: Newton.py Fil: Newton.java Utskrift igen

Klart! 31 Fil: Newton.py Fil: Newton.java

Sammanfattning: Satser och gruppering 32 Fil: Newton.py Fil: Newton.java Radbrytning avslutar sats Semikolon eller {} avslutar sats Gruppering via indentering Gruppering via klamrar {} Indentering ändå viktigt för läsbarhet!

Repetition: Funktioner 33 Pythons funktioner på toppnivå kan "emuleras" i Java Använd en public static-funktion Bara till vi har Fil: Newton.java hunnit läsa om objekt! Ange alltid returtyp Om inget returneras: void Returnera värde med return

sats = statement

Villkor: if 35 Python Java Python Java

Villkor: if (2) 36 Python Java

Test av samma uttrycks värde 37 Här jämför vi värdet på x+y med några kända konstanter konstanter = constants

Satser: switch 38 Kan göras med en switch-sats! Fungerar för heltal, strängar och enum-konstanter Klar : Hoppa ur switch-satsen Flera fall (1 och 2) ger samma kod att utföra Frivilligt: Vad händer när inget av fallen passar? Tydligt att man testar värdet på ett uttryck; skriv uttrycket (x+y) en gång Kräver extra "break"

Satser: switch med fallthrough 39 Inget break här, så vi fortsätter in i nästa fall Fallthrough kan förvirra oftast bra att skriva på annat sätt!

Kommande föreläsningar: När variabler har datatyper: I Java och många andra språk Objektorientering