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

Relevanta dokument
TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

TDDD78 Att välja och genomföra ett projekt

TDDD78 Att välja och planera ett projekt

Att välja och planera ett projekt

Före projektet TDDD78, TDDE30, 729A

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

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

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

Variabler, värden och typer

TDDD78 Att välja och planera ett projekt

JAVA Mer om klasser och objektorientering

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.

Chapter 4: Writing Classes/ Att skriva egna klasser.

TDDD78 / 729A85 Objektorienterad programmering och Java

Objektorientering: Lagring och livstid

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

TDDD78 Objektorientering: Lagring och livstid

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

Praktikum i programmering

Föreläsning 14. Filhantering

Välkomna till DIT012 IPGO. Tyvärr en bug i Google Docs: Sidnummer stämmer inte alltid. Alla anteckningar börjar på sidan 1.

Laboration 3, uppgift En klass för en räknare

Objektorientering: Lagring, räckvidd och livstid

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsnings 9 - Exceptions, I/O

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

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

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

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

"if"-satsen. Inledande programmering med C# (1DV402)

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

Föreläsning 1 & 2 INTRODUKTION

Redovisning av inlämningsuppgifter

Design och konstruktion av grafiska gränssnitt

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

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

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

Tentamen i Grundläggande programmering STS, åk 1 lördag

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Variabler, värden och typer

Programmering, abstraktion och modellering PROJEKTFÖRELÄSNING ANDERS MÄRAK LEFFLER IDA/HCS

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

TDDI82 - Projekt. Christoffer Holm. Institutionen för datavetenskap (IDA)

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

Objektorienterad Programmering (TDDC77)

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3. Programmering, C och programmeringsmiljö

Laboration 1 - Grunderna för OOP i Java

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

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

JAVAUTVECKLING LEKTION 4

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

Versionshantering. Jan Erik Moström

Laboration 1. Objektorienterad programmering, Z1. Syfte

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Objektorienterad Programkonstruktion. Föreläsning jan 2016

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

Eclipse. Kort genomgång

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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.

Föreläsning 23. Tobias Wrigstad. Refaktorering

Metoder. Inledande programmering med C# (1DV402)

Föreläsning 1 & 2 INTRODUKTION

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Malmö högskola 2007/2008 Teknik och samhälle

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

Tentamen. Lösningsförslag

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Testramverk och Model based testing med java i praktiken

F4. programmeringsteknik och Matlab

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

Tentamen i Grundläggande programmering STS, åk 1 fredag

tentaplugg.nu av studenter för studenter

Algoritmer. Två gränssnitt

Laboration 1 Introduktion till Visual Basic 6.0

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

TDDE10 TDDE11, 725G90. Gemensam kurswebsida på:

OOP Objekt-orienterad programmering

GIT L0012B. Implementation av geografiska informationssystem. Information inför kursstart

Föreläsning 1: Introduktion

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

Linux som utvecklingsmiljö

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

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

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

Tentamen , Introduktion till Java, dtaa98, dtea53

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Design och konstruktion av grafiska gränssnitt

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

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

Transkript:

Labb 1: Vad, hur, och varför? jonas.kvarnstrom@liu.se 2017

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

Många har redan använt andra verktyg 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!

Om du inte (är säker på att du) förstår varningen 1. Förklaringar från IDEA 2. Förklaringar på kurswebsidorna 3. Fråga handledaren 4. Fråga examinatorn

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

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

Stöd för refactoring Gör en metod (funktion) för många olika saker? Hitta en meningsfull del, extrahera en underfunktion! IDEA tar hand om parametrar,

Börja (eller fortsätt) använda versionshantering: Git Skapa ett filarkiv där varje ny version av koden sparas Checka in efter att en övning avklarats, en feature implementerats, Se historiken på gitlab.ida.liu.se eller i IDEA Slipp manuell hantering: "project", "project-old", "project-newer",

Börja (eller fortsätt) använda versionshantering: Git Se vad som ändrats i en fil, när, av vem och återställ ändringar som inte checkats in.

Börja (eller fortsätt) använda versionshantering: Git Infoga ändringar från annan dator, annan projektmedlem VCS Update Project, inte skicka zip-filer Skriv inte över varandras ändringar Lämna in kod via Git (Tetris/projekt) Högerklicka rätt version, sätt en etikett (tag), skicka etiketten via epost inte en zip-fil Nytt för i år! Informera oss direkt vid problem / oklarheter

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! Labb 1 bör vara klar måndag/tisdag Deadlines finns på nätet Professionalism! Eget arbete utanför schema: 4h/vecka för labbar = 16h 8h/vecka för Tetris = 24h

Labb 2: Intro till objekt och klasser i Java (efter föreläsning 3) Labb 3: Hierarkier av objektklasser (en hund är en sorts djur) Labb 4: Hur man blir av med vissa problem

jonas.kvarnstrom@liu.se 2017 Labbar: Vad är fokus?

När är ett program (en inlämning) bra? När körningen ger rätt resultat"? Nej! När programkoden är tydlig, välstrukturerad och visar att ni vet vad ni gör!

jonkv@ida Kvalitet (1) 16 Ser det ut så här, blir vi misstänksamma

jonkv@ida Kvalitet (2) 17 Har ni kopplat så här, är det farligt

jonkv@ida Kvalitet (3) 18 Ser det ut så här, undrar vi vad ni egentligen har gjort Även om ni faktiskt fick lampan att lysa

jonkv@ida Exempel 19 Ett extremt exempel: Skriver ut "TIGERteam" 384 gånger

jonkv@ida Exempel 20 Ett alternativ : // https://codegolf.stackexchange.com/questions/22533/weirdest-obfuscated-hello-world import java.io.bytearrayoutputstream; public class MysteryCode { public static void main(string[] unused) throws Exception { ByteArrayOutputStream stoned = new ByteArrayOutputStream(20480); int[] magic = {104, 116, 116, 112, 58, 47, 47, 98, 105, 116, 46, 108, 121, 47, 49, 98, 87, 119, 51, 75, 111}; for (int weird : magic) stoned.write(weird); int crazy, unknown = 0; java.io.inputstream wtf = new java.net.url(stoned.tostring()).openstream(); while((crazy = wtf.read())!= -1) stoned.write(crazy); for (int strange : stoned.tobytearray()) { if (unknown == 2) { if (strange == 38) break; System.out.print((char) strange); } else if (17 + (unknown + 1) * 21 == strange) { unknown++; } } } } Skriver ut Hello, World

jonkv@ida Orsak och verkan 21 Programmet fungerar (ger rätt utmatning, ) Jag kan programmera! Jag kan programmera! Programmet fungerar (ger rätt utmatning, ) Programmet är välskrivet, lätt att förstå, välstrukturerat, Jag förstår varför jag gör på ett visst sätt

jonkv@ida Kvalitet: Fokus 22 Skriv bra kod! Lättläst Bra namngivning Strukturerad, modulär Väldokumenterad och kommenterad där det behövs mest! Extremt viktigt för: Hur programmet kan utökas i framtiden Hur andra kan förstå programmet Hur robust det är när fel uppstår Utveckling är ofta 20% av arbetet Underhåll är 80%!

jonkv@ida Kvalitet: Icke-fokus 23 Inte fokus på petitesser Indenteringsstil,

jonkv@ida Hur ska man skriva kod? 24 Tips: Always code as if the person who ends up maintaining your code is a violent psychopath who knows where you live. "I usually maintain my own code, so the as-if is true." http://c2.com/cgi/wiki?codeforthemaintainer