TDDD78 / 729A85 Objektorienterad programmering och Java

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

TDDD78 / 729A85 Objektorienterad programmering och Java

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

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

Labb 1: Vad, hur, och varför?

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Introduktion till programmering

Introduktion till programmering

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

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)

Imperativ och Funktionell Programmering i Python #TDDD73

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

OOP Objekt-orienterad programmering

Variabler, värden och typer

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

Introduktion till Python. TDDE23 Funktionell och imperativ programmering, del 1 Föreläsning 3 Peter Dalenius Institutionen för datavetenskap

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

Imperativ och Funktionell Programmering i Python #TDDD73. Fredrik Heintz,

Variabler, värden och typer

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

Programmering A. Johan Eliasson

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION

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

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

Variabler, värden och typer

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

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

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

(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

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

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

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

Classes och Interfaces, Objects och References, Initialization

SMD 134 Objektorienterad programmering

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

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

Anteckningar 1: Grundläggande saker

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Undervisning. Examination

Mer Java 2015

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.

DD1314 Programmeringsteknik

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TDIU01 - Programmering i C++, grundkurs

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

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

Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll

Undervisning. Examination

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

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

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

DD1310/DD1314/DA3009 Programmeringsteknik LÄRANDEMÅL... Vilka läser kursen? ...FLER LÄRANDEMÅL. Föreläsning 1

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

TDDC77 Objektorienterad Programmering

Introduktion till programmering. Programspråk och paradigmer

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Omprov 11/11. på förmiddagen.

Objektorientering: Lagring och livstid

Objektorienterad programmering

Parameteröverföring. Exempel. Exempel. Metodkropp

Objektorienterad programmering i Java I

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

F4. programmeringsteknik och Matlab

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

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

Imperativ programmering

Objektorienterad Programmering (TDDC77)

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

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

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

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

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

SMD 134 Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

TDDD78 Objektorientering: Lagring och livstid

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

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

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

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorientering: Lagring, räckvidd och livstid

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

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

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Program & programmering

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

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Introduktion till programmering, hösten 2011

Grundkurs i programmering - intro

Introduktion till programutveckling

TDDC77 Objektorienterad Programmering

Transkript:

jonas.kvarnstrom@liu.se 2015 TDDD78 / 729A85 Objektorienterad programmering och Java

Fråga kommentera avbryt!

Inblandade 5 Examinator, kursledare: Jonas Kvarnström

Inblandade (2) 6 Handledare, sedan flera år Mikael Nilsson Daniel de Leng Piotr Rudol Mariusz Wzorek U-studenter D-studenter Kogvet-studenter?

Förkunskaper 8 Vad kan ni redan? Grundläggande begrepp inom programmering Konkreta programmeringskunskaper i Python, motsvarande t.ex. TDDD73

Objektorienterad programmering Konkret OO-språk: Java Generella språkbegrepp: Stark typning, ERA MÅL: Få kunskap och färdigheter inför framtida programutveckling Generella färdigheter: Verktyg för utveckling Programmeringsbegrepp: Modularitet, Programmeringsvana!

D-studenter U-studenter Kogvet-studenter? Studenter, inte elever Kunskapstörstande Aktiva och proaktiva

Labbuppgifter med instruktioner 2 hp (utökat) Godkänt / komplettering Egna tankar och reflektioner! Projekt med friare val 4 hp 3 / 4 / 5 / komplettering Föreläsningar MEDEL: Hur ska ni uppnå era mål? Kurslitteratur, info på nätet Automatisk kodinspektion för att hitta förbättringsmöjligheter Inlämning Feedback Komplettering Handledare att fråga och diskutera med

Kunskaper 12 Vad kan ni redan? Grundläggande begrepp inom programmering Konkreta programmeringskunskaper i Python, motsvarande t.ex. TDDD73 Läsa!

Blockschema 13 Ibland 8-10, 17-19

Steg 0: Labbanmälan Snarast: Anmälan till steg 1 i WebReg, enskilt 8 storgrupper (A-B-C-D-E-F-G-H), olika labbtider: D1A A, B D1B C, D D1C E, F U1 G, H Övriga A, B, G, H

Steg 1: Grunder, labbmiljö, era första Java-program Vecka 4 Vecka 5 Vecka 6 3 labbar, enskilt Steg 2: Fortsättning, större labb Vecka 7 Vecka 8 Vecka 9 1 labb, enskilt Steg 3: Utforska, gör något eget ett projekt! Vecka 9 Vecka 10 Vecka 11 Vecka 12 Vecka 13 Vecka 14 Vecka 15 Vecka 16 Vecka 17 Vecka 18 Grupper om 2 rekommenderas

Uppföljning 16 Vad kommer sedan? OOP Begrepp Java Mer programmeringsvana! U: TDDD80 (11 hp) Mobila och sociala applikationer / Java D, U: TDDD86 (11 hp) Datastrukturer, algoritmer och programmeringsparadigm / C++ TDDB68 Processprogrammering och operativsystem / OO

Början och slutet 17

Varför Java? Varför ska vi använda Java, när det finns så många OO-språk? 19 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, Allgemeiner Berichts-Aufbereitungs- Prozessor Objektorientering kan kombineras med andra paradigm! Haskell++ (t.ex.) är funktionellt + OO

Varför 2 Inte Python igen Vi behöver breda kunskaper, skilda perspektiv! 20 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

Varför 3 Ett av de mest använda OO-språken, i många områden Webapplikationer Viktiga delar av Googles system Android-appar (med några skillnader) http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Position Position Ratings Language jan-15 jan-14 jan-15 1 1 C 16.703% 2 2 Java 15.528% 3 3 Objective-C 6.953% 4 4 C++ 6.705% 5 5 C# 5.045% 6 6 PHP 3.784% 7 9 JavaScript 3.274% 8 8 Python 2.613% 21 OOspråk

Varför 4 Många likheter med andra vanliga språk men "enklare grunder" än många av dessa 22 Position Position Ratings Language jan-15 jan-14 jan-15 1 1 C 16.703% 2 2 Java 15.528% 3 3 Objective-C 6.953% 4 4 C++ 6.705% 5 5 C# 5.045% 6 6 PHP 3.784% 7 9 JavaScript 3.274% 8 8 Python 2.613% C och dess efterföljare

Varför 5 Många egenskaper passar bra för undervisning 23 Mindre omfattande än vissa andra språk Jämförelsevis lätt att analysera Skräpsamling, minnesskydd "C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly" Bra utvecklingsmiljöer, avancerat stöd Svårare att göra fel, lättare att hitta fel Fungerar på många plattformar Stort klassbibliotek C# mer bundet till Windows Funktionalitet som finns överallt

Snabbstart Snabbstart börja prova på omedelbart! Minimal kursinfo nu mer kommer senare Första labben redan i morgon 24

jonas.kvarnstrom@liu.se 2015 Introduktion till Java -- Utan objektorientering, för Pythonprogrammerare!

Två sammanhängande delar Föreläsning 1: Allmän orientering, teoretisk kunskap Labb 1: Prova på, få praktisk erfarenhet

MÅL NU: Få en första känsla för skillnaderna LABB 1: Praktisera Experimentera Se alla detaljer Tillsammans: Inlärning

Skillnad i mål och "filosofi" 29 Python Enkelt att skriva små program Ska vara lätt att komma igång med Java Fokus på större program OK om det kräver lite mer att komma igång Mer fokus på prestanda (!) Har många konsekvenser!

Kod på toppnivån (1) 30 Python: Kod kan skrivas på "toppnivån" Java: All kod är i en klass, alla satser i en metod (funktion) print("hello World ) HelloWorld.py Kod på toppnivå körs när man "kör" filen Enkel uppgift enkel kod public class HelloWorld { public static void main(string[] args) { System.out.println("Hello World!"); HelloWorld.java main() startas när man "kör" klassen Mer "overhead" runtomkring Märks mindre i större program Har vissa fördelar klass = class metod = method

Interaktivitet (1) Python kan köras med kod sparad i en fil 31 zaza4 <23> python3 newton.py This program tries to find the square root of a number. Enter a number: 2 1.5 1.4166666666666665 1.4142156862745097 1.4142135623746899 1.414213562373095

Interaktivitet (2) eller i interaktivt läge 32 >>> 2+3 5 >>> 2+4*5-6 16 >>> print("hello world!") Hello world! >>> def greeting():... print( Nobody expects the Spanish Inquisition.")... print( Our chief weapon is surprise... and fear.")... >>> greeting() Nobody expects the Spanish Inquisition. Our chief weapon is surprise... and fear.

Interaktivitet (3) Java har inget interaktivt läge! Skriv alltid kod i en fil Fil: Newton.java 33 public class Newton { public static void findroot() { System.out.println("This program tries to find "); System.in.read ; double guess = x/2; for (int i = 1; i < 5; i++) { guess = (guess + x/guess) / 2; System.out.println(guess); public static void main(string[ ] args) { findroot();

Interaktivitet (4): Explicit kompilering Java har också explicit kompilering ett extra steg 34 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) 35 Nära samband Ingen interaktiv prompt Explicit kompilering Ingen programkod på toppnivån

Syntaxskillnader 37 Fil: Newton.py # Vad ska vi skriva här? Fil: Newton.java // Vad ska vi skriva här? /* En lång kommentar som kan sträcka sig över flera rader */

Syntaxskillnader 38 Fil: Newton.py Fil: Newton.java public class Newton { Allt måste ligga i en klass Det som är inuti klassen läggs inom { (bara indentering räcker inte!) Namnstandard: VarjeOrdHarStorBokstav JavaTest, ArrayList, Unicode kan använda å, Θ, π, Σ, Я, Ỡ

Syntaxskillnader 39 Fil: Newton.py def find_root(): Fil: Newton.java public class Newton { public static void findroot() { Funktioner ligger i klasser public, static: Förklaras senare void: "Returnerar inget värde" Klamrar runt metoden: { Namnstandard: storbokstavutomförstaordet

Syntaxskillnader 40 Fil: Newton.py def find_root(): print("this program tries to find.") Python-strängar: "Hello" eller 'Hello' Jämförelse: str1 == str2 Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); Java-strängar: "Hello" Jämförelse: str1.equals(str2) Apostrofer kan användas för enskilda tecken: 'H'

Syntaxskillnader 41 Fil: Newton.py def find_root(): print("this program tries to find.") Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); Utskrift är en metod, "println", i ett objekt, "System.out" Mer info på labben! Semikolon efter satser Radbrytning räcker inte! Vi indenterar för läsbarhet Ignoreras av språket

Syntaxskillnader 42 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); ; Java är mindre anpassat för "textprogram" Enklare att visa en dialogruta (kommer på labben)

Syntaxskillnader 43 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 Va? Det kan väl datorn fatta själv? Ja, men tänk om du skriver gues nästa gång. Mer att skriva extra säkerhetsbälte. Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); ; double guess = x/2; Variabler måste deklareras: "Här kommer en ny variabel" (annars säger kompilatorn att "guess finns inte") Va? Det kan väl datorn fatta själv? Delvis, men det har också nackdelar. Vi återkommer till typning nästa gång! Java har explicit typning: Ange alltid vilken typ en variabel ska ha (double) deklarera = declare

Syntaxskillnader 44 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); ; double guess = x/2; Namnstandard: storbokstavutomförstaordet

Primitiva (icke sammansatta) typer i Java 45 Heltalstyper lika på alla plattformar! min max byte 8 bitar -128 127 short 16 bitar -32768 32767 int 32 bitar -2147483648 2147483647 Används sällan Vanligast! long 64 bitar -9223372036854775808L 9223372036854775807L "L" indikerar "långt heltal" Två flyttalstyper skiljer i precision och storlek float 32 bitar ±3.40282347E-45 ±3.40282347E+38 double64 bitar ±4.9406564584124654E-324 ±1.797769313486 E+308 Övrigt boolean false, true char tecken (värden 0..65535)

Syntaxskillnader 46 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); System.in.read ; double guess = x/2; for (int i = 0; i < 5; i++) { Annan loopsyntax (se labb): Deklarera heltal i = 0 Så länge som i < 5 { Utför loopkroppen i++ (öka värdet på i)

Syntaxskillnader 47 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); System.in.read ; double guess = x/2; for (int i = 0; i < 5; i++) { Loopens kropp läggs också inom klamrar {

Syntaxskillnader 48 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess) / 2 Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); System.in.read ; double guess = x/2; for (int i = 0; i < 5; i++) { guess = (guess + x/guess) / 2; Nu är guess redan deklarerad! Många operatorer liknar Python

Operatorer i Python och Java 49 Python Räknesätt: + - * / % Upphöjt till: ** Division avrundad nedåt: // Jämförelser: ==!= > < >= <= Jämförelser: <> Java Samma Använd Math.pow(bas, exponent) Använd (int) (x / y) Samma Använd!= Tilldelning: = += -= *= /= %= Tilldelning: i += 1 Tilldelning: i -= 1 Samma Använd i++ Använd i-- Bra vid komplexa uttryck: sums[map.getindex(x)] += 12 sums[map.getindex(x)] = sums[map.getindex(x)] + 12 Bitoperatorer: & ~ << >> Samma (men finns flera) Villkor: and or not Använd &&!

Syntaxskillnader 50 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess) / 2 print(guess) Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); System.in.read ; double guess = x/2; for (int i = 0; i < 5; i++) { guess = (guess + x/guess) / 2; System.out.println(guess); Utskrift igen

Syntaxskillnader 51 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); System.in.read ; double guess = x/2; for (int i = 0; i < 5; i++) { guess = (guess + x/guess) / 2; System.out.println(guess); print "Done!" System.out.println("Done!");

Syntaxskillnader 52 Fil: Newton.py def find_root(): print("this program tries to find.") x = eval(input("enter a number: ")) guess = x/2 for i in range(5): guess = (guess + x/guess)/2 print(guess) print "Done!" Gruppering via indentering Radbrytning avslutar sats Fil: Newton.java public class Newton { public static void findroot() { System.out.println("This "); System.in.read ; double guess = x/2; for (int i = 0; i < 5; i++) { guess = (guess + x/guess) / 2; System.out.println(guess); Gruppering via måsvingar { Semikolon eller { avslutar sats System.out.println("Done!"); Indentering ändå viktigt för läsbarhet!

"En sak i taget": Öva grunder innan det blir mer komplicerat Önskemål från studenter: Prova på kontrollstrukturer Intro till grunder i Java helt utan objektorientering

"Vi vill vara kreativa, jobba på egen hand!" 1) Hör/läs 2) Utför handgreppen 3) Jobba självständigt Tutorial-form: Detaljerade instruktioner "Varsågod, lär dig simma!" eller träna muskelminnet först?

Resultatet består inte av kod! Uppgift: "Skriv ett program som skriver ut en multiplikationstabell" Mål: Skapa tabeller? Usch, så långa instruktioner. De kan jag strunta i, jag kan det här <Hacka, skriv, testa, fixa> Testet verkar skriva ut rätt värden! Inte blev det snyggt, och jag vet inte riktigt hur det fungerar, men koden gör sitt jobb så jag är klar! Mål: Lära sig programmering? Oj, så mycket intressant information! Det här måste jag läsa och fundera över. Hur Javas loopar fungerar, jämfört med Python Hur operatorn "+" fungerar för strängar och tal i Java Varför det är bra att ge konstanter symboliska namn Resultatet består av kunskap!

Inte bara färgläggning av nyckelord Har användbara verktyg: Debugger, Introduktion till utvecklingsmiljön Kan analysera kod, varna för troliga problem Lär er tidigt, dra nytta under hela utbildningen

Många har redan använt Eclipse Få en bred utbildning, även i verktyg Mobila applikationer: Android Studio Introduktion till gemensam utvecklingsmiljö: IntelliJ IDEA (open source-version finns) Bra kodanalys, har kraftigt minskat antal rutinproblem som ger komplettering Professionalism: Var beredd att använda arbetsgivarens verktyg! Vissa protesterar först, tackar i utvärderingen Andra miljöer får användas i projektet, men kodanalys krävs

Varningar för möjliga problem (600 inspektioner ) Fixa buggar, undvik kompletteringar, lär er direkt från varningarna!

Smart kodkomplettering LÄS: http://jetbrains.dzone.com/articles/top-20-code-completions-in-intellij-idea

Stöd för refactoring Refactoring = omstrukturering av koden Ofta för att förbättra design, läsbarhet, Exempel: Döp om "Sök och ersätt"? Kan ersätta något orelaterat också!

Stöd för refactoring Är en metod (funktion) för lång? Extrahera en underfunktion! IDEA tar hand om parametrar,

Var klara i tid, annars förskjuts hela kursen och andra kurser! Ni får bättre hjälp om handledarna kan fokusera på en labb i taget Håll takten! Bör vara klart denna vecka, deadlines står på nätet Professionalism: Lär er vara klara till deadline

Kommande föreläsningar: Mer om Java Stark typning i Java Mer kursinformation och labbinformation Objektorientering