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?

Mer Java 2015

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

Objektorienterad Programmering (TDDC77)

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

(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

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

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

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

Introduktion till programmering. Programspråk och paradigmer

Variabler, värden och typer

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

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

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

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

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

Objektorientering: Lagring, räckvidd och livstid

Imperativ programmering

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

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

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

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?

Objektorientering: Lagring och livstid

Variabler, värden och typer

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

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 6: Metoder och fält (arrays)

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

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

Imperativ programmering. Föreläsning 2

F4. programmeringsteknik och Matlab

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

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

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

TDDD78 Objektorientering: Lagring och livstid

Imperativ programmering. Föreläsning 4

Tentamen OOP

TDIU01 - Programmering i C++, grundkurs

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

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

TDP002 Imperativ programmering

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

OOP Objekt-orienterad programmering

Planering Programmering grundkurs HI1024 HT 2014

Föreläsning 1 & 2 INTRODUKTION

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

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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!

Imperativ programmering. Föreläsning 3

OOP Objekt-orienterad programmering

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Introduktion till Datalogi DD1339. Föreläsning 1 8 sept 2014

TDP002 - Imperativ programmering

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

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

TDDC77 Objektorienterad Programmering

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

Programmering A. Johan Eliasson

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

Programmeringsteknik med C och Matlab

OOP Objekt-orienterad programmering

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

Program & programmering

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

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning 1 & 2 INTRODUKTION

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

SMD 134 Objektorienterad programmering

Programmeringsteknik I

OOP Tentamen

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.

Innehållsförteckning

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

TDDC77 Objektorienterad Programmering

Planering Programmering grundkurs HI1024 HT TIDAA

TDP002 - Imperativ programmering

TENTAMEN OOP

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

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

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.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

1 Funktioner och procedurell abstraktion

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

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

Objektorienterad Programmering DAT043

Arrayer (fält)

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

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

En kort text om programmering i C.

732G14 Programmering 2

Transkript:

TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 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 breda kunskaper, skilda perspektiv! Learn at least a half dozen programming languages. 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? Likheter med andra vanliga språk: C, C++, C#, (PHP, Javascript, ) Använder vanliga begrepp, tankesätt: Typning, klasser, statisk scoping, Medelkomplexitet: Mer att tänka på än Python, lättare att börja ä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: Flera programmeringsparadigm Inklusive imperativ procedurell kod HelloWorld.py Java: Klassbaserad objektorientering 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 körs normalt med kod sparad i en fil Fil: Newton.java

Interaktivitet (4) 14 men numera finns också jshell (här i verbose-läge): Har en del smarta funktioner (tab-komplettering, hjälptexter, ): http://cr.openjdk.java.net/~rfield/tutorial /JShellTutorial.html

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

Syntax: Kod i klasser 17 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 18 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 19 Fil: Newton.py Fil: Newton.java Klamrar runt metodens kod: { } Namnstandard: storbokstavutomförstaordet

Syntax: Strängar, utskrifter 20 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 21 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 22 Fil: Newton.py Fil: Newton.java Java är mindre anpassat för "textprogram" Enklare att visa en dialogruta (kommer på labben)

Deklarera variabler 23 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 24 Fil: Newton.py Fil: Newton.java Namnstandard: storbokstavutomförstaordet

Loop över heltal 25 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 26 Fil: Newton.py Fil: Newton.java Loopens kropp läggs också inom klamrar { } Efter klamrar: Inget semikolon

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

Referens: Operatorer i Python och Java 28 Python Java

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

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

Sammanfattning: Satser och gruppering 31 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 32 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 34 Python Java Python Java

Villkor: if (2) 35 Python Java

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

Satser: switch 37 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 38 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