Jonas Kvarnström jonkv@ida.liu.se 2013
Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket? 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 Visual Basic, Fortran 2003, Perl, COBOL 2002, PHP, ABAP, Objektorientering kan kombineras med andra paradigm! Haskell++ (t.ex.) är funktionellt + OO
Primärt språk: Java Ett av de mest använda OO-språken, i många områden Webapplikationer Viktiga delar av Googles system Android-appar Många egenskaper passar bra för undervisning Jämförelsevis lätt att analysera Bra utvecklingsmiljöer med navigering, refactoring, Skräpsamling, minnesskydd Enkel minneshantering, lättare att hitta vissa fel Stark statisk typning Många felkontroller sker direkt i utvecklingsmiljön
Syfte : Lära sig grundläggande skillnader i C++ Till framtida kurser
Förkunskapskrav Grundläggande begrepp inom programmering. Konkreta programmeringskunskaper i något språk, t.ex. Lisp och/eller Ada. Programmering i C-delen av C++, motsvarande TDDC68 Imperativ programmering i Ada. Detta är det enda vi får utgå ifrån!
Jonas Kvarnström jonkv@ida.liu.se 2013
Föreläsningar ger information om OOP, Java och C++ Bilder på engelska föreläsning på svenska Grunder i objektorientering, med Java som konkret exempel Mer avancerat: Felhantering / exceptions, trådhantering, Några användbara klassbibliotek i Java: Datatyper, GUI, UML-diagram för objektorienterad mjukvara Designmönster Introduktion till C++
Kurslitteratur för Java: Föreläsningsbilderna Dokumentation för klassbibliotek (på nätet) En valfri bok The Java Tutorial (http://docs.oracle.com/javase/tutorial/) Skansholm: Java direkt med Swing (Studentlitteratur) Eckel: Thinking in Java (http://www.mindview.net/books/tij/) Kurslitteratur i C++: Föreläsningsbilderna Gärna en bok (valfri) Eckel: Thinking in C++ (gratis)
Laborationer Labb : Introduktion till labbmiljön och Java Kom igång så tidigt som möjligt Labb : Objektorientering och Java Utveckla ett enkelt spel i tutorialform Labb : Programmering i C++ Översikt över språkets skillnader Projekt Designa och implementera ett eget program i Java Kan också vara ett spel, eller något helt annat Programmering sker i grupper om två (eller en) Anmäl er i WebReg denna vecka
Utvecklingsmiljö: IntelliJ IDEA (finns open source-version)
Utvecklingsmiljö: IntelliJ IDEA Varför? Kodnavigering, komplettering, analys, refactoring/omstrukturering, automatiska kodinspektioner Andra miljöer? Ja, men: Lämna in kod som IDEA-projekt Analysera med IDEAs inspektioner först!
Nytt för i år: Automatisk kodinspektion för labbar och projekt Hjälper er undvika onödiga buggar och kompletteringar! IDEA kommer att klaga på en del bra kod också Oundvikligt!
Det kan också vara en bra idé att fråga assistenterna om hjälp om man kör fast, istället för att sitta och slå huvudet i bordet tills man tappar motivationen att fortsätta.
Måla inte in er i ett hörn! Ständig uppföljning med handledare Diskutera problem och lösningar Be handledaren titta på koden Fånga upp problem tidigt Jobba inte enbart hemma!
Ge oss feedback under kursens gång! När något inte fungerar När vi går genom för detaljerat / för snabbt När vi kan göra något bättre Vissa saker kan ändras on the fly! Större förändringar sedan förra året: Många förbättringar i föreläsningsbilder, labbar/projekt, instruktioner Kodinspektioner i IDEA Fler labbassistenter
Var ska vi fortsätta? Liknar C/C++, många detaljer men få nya begrepp separat häfte (läs!) Behöver datatyper, satser osv. för att förstå klasser Objektorienterade / klassorienterade aspekter av Java All Java-kod måste finnas i en klass Användbara klasser som finns i alla Javainstallationer Primitiva datatyper, procedurella kontrollstrukturer, osv. Klassbibliotek