TDDC77 Objektorienterad Programmering

Relevanta dokument
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)

Objektorienterad Programmering (TDDC77)

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

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

F4. programmeringsteknik och Matlab

TDDC77 Objektorienterad Programmering

SMD 134 Objektorienterad programmering

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

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

Classes och Interfaces, Objects och References, Initialization

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

TDDC77 Objektorienterad Programmering

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

Programmering A. Johan Eliasson

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

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

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

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

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

(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

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Språkkonventioner och redigering av tal.

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

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

Enkla datatyper minne

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering (TDDC77)

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

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

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

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

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Objektorienterad Programmering (TDDC77)

OOP Objekt-orienterad programmering

Föreläsning 2 - Intro till Java

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

Föreläsning 2, vecka 8: Repetition

TENTAMEN OOP

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Objektorienterad Programmering (TDDC77)

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

Läsanvisning: Dessa OH bilder samt kap 1-3

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

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?

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

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 7. Nyckelord I Java. Uttryck. Uttryck, Operatorer Och Kontrollflöden

TDIU01 - Programmering i C++, grundkurs

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning REPETITION & EXTENTA

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

F6 Objektorienterad design. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN OOP

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Lösningsförslag tentamen FYTA11 Java

Imperativ programmering. Föreläsning 2

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

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

Anteckningar 1: Grundläggande saker

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

Transkript:

TDDC77 Objektorienterad Programmering Föreläsning 2 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin, 2018

Outline Emacs Introduktion till Objektorienterad Programmering Introduktion till Java Variabler

macs

Viktiga punkter En editor som används mest för programmering i olika språk. Man ska kunna vissa kommandon för att kunna jobba med Emacs. Bra verktyg för inlärning och för att komma igång med programmering. Inte så effektivt när det kommer till programmering för produktion. Varför?

Introduktion till Objektorienterad Programmering

Objektorienterade program Ett objektorienterat program består av ett eller flera objekt. Varje objekt har beteenden och egenskaper. Ett objekts beteenden kan anropa/använda andra objekts beteenden. Till exempel en människa kan kasta en boll. För att kasta bollen, ska bollen kunna flyga. Objekt ligger i datorns minne. Objekt skapas medan programmet körs(run-time).

Objektorienterade program Minne :Human :Ball Call/Use Throw Fly

Klasser En klass beskriver ett objekt liksom en blåkopia beskriver ett hus som inte har byggts än. En klass innehåller beskrivningen av beteenden och egenskaper. Flera objekt kan skapas från en vanlig klass. Ett objektorienterat programmeringsspråk ska användas för att implementera klasserna. Till exempel Java eller C#. Det är vanlig praxis att skissa hela programmet som består av flera klasser på papper eller i dator inför implementationen. På det här sättet kan hela systemet analyseras och möjliga fel i arkitekturen kan upptäckas i god tid.

Introduktion till Java

Pure objektorienterad programmering C, C++, C# och Java tillhör till C family språk. C kan bara användas för att implementera procedurella program. Java och C# kan bara användas för att implementera objektorienterade program. C++ kan användas för att implementera både procedurella och objektorienterade program. I procedorell programmering finns det inga objekt. Det finns bara procedurer(beteenden) i programmet som anropar varandra.

Java nyckelord abstract continue for new switch assert default goto package synchronized boolean do if private this break double implements protected throw byte else import public throws case enum instanceof return transient catch extends int short try char final interface static void class finally long strictfp volatile const float native super while

Java nyckelord Nyckelord gör grundläggande uppgifter i varje programmeringsspråk. Några exempel i javas fall: 1. Att deklarera en klass. class 2. Att returnera ett värde från en funktion(metod). return 3. Att alokera utrymme i minnet för att lagra data. Int, float, double, char,... 4. Att styra programflödet. If, while, switch and... 5.... Det är inget nyckelord till exempel för att göra inmatning och utmatning!!! Hur ska vi göra massor av andra grejer som kommer att behövas i programmet? Ska vi implementera de själva? Svaret: ETT STORT NEJ!

En Java klass En Java klass innehåller metoder/funktioner(beteenden) och/eller fält/variabler(egenskaper). En Java klass kan använda/ha relation med andra Java klasser. Varje klass har ett namn. En klass ligger i en fil med samma namn som klassen. Klasser deklareras genom att använda nyckelordet class. Varje ord i klassnamnet börjar med en stor bokstav. Till exempel, Human, HumanRace, AncientHuman,...

En Java klass class Human{ int throwball(){ Klassens namn } int height; Metodens namn } nyckelord Variabelns namn

En metod En metod tar emot data(om behövs), gör beräkningar och returnera ett resultat(om behövs). Varje metod har ett namn. Varje metod har en signatur som följande: int walk(int meter){ // metodens kropp eller body return 10; } Typen på emottagen data Typen på resultatet Signaturen är unik i klassen. Varje ord i metodnamn börjar med en stor bokstav förutom första ordet. Till exempel, walk, walkonwater, walkslowly,. Det är vanligt att metodnamn börjar med ett verb. En metod innehåller en grupp av instruktioner. Varje instruktion/statement avslutar med en semikolon(;).

Ett enkelt program Filen måste ha samma namn som klassen. Kommentarer med /*... */ och //... Filen måste innehålla en klass, class Namn { /* body */ } En main metod ligger i klassen som följande public static void main(string[] args){ /* body */ } Det är viktigt att använda samma signatur för main metoden hela tiden. Metoden main gör klassen körbar, Runnable. Den anropas automatiskt av virtuella maskinen när klassen körs genom att använda kommandot java KlassNamnet

Task 1-3 minuter I terminalen: 1. Skapa en katalog, säg lec02 med mkdir lec02. 2. Kom in i katalogen med cd lec02. 3. Skapa/öppna HelloWorld.java i emacs med emacs HelloWorld.java 4. Skriv följande koden i filen: 5. 6. 7. 8. Spara filen med: C-x C-s Avsluta: C-x C-c Kompilera javakoden med javac HelloWorld.java Kör programmet med java HelloWorld

Ett enkelt program Körningen avslutar när sista instruktionen i metoden main har anropats och är klar. Ett program kan bestå av flera klasser i flera filer. Men men, det är bara en klass som innehåller main metoden. De flesta klasserna som innehåller ingen main metod används direkt eller indirekt av klassen som innehåller main metoden. Oobs! Instruktioner/statements KAN BARA LIGGA I METODER. Det är ett små undantag när det kommer till initialiseringen av fält.

Ett enkelt program class, Hej, public, main, System, String, println är identifierare. Några har vi valt själva (Hej, args). Vissa har andra programmerare valt (String, System, out, println ). Andra programmerare!!? Vissa är nyckelord (class, public, static, void) http://docs.oracle.com/javase/tutorial/java/ nutsandbolts/_keywords.html

Egna identifierare Kombination av bokstäver, siffror, _, och $. Kan inte börja med en siffra. Exempel: Hej, total, numberofelements, $var, NUM_SEATS Men inte: 2th, var#5 Det finns skillnad mellan stora och små bokstäver: sum, Sum och SUM är inte samma identifierare.

Egna identifierare Det finns konventioner. Paketnamn: små bokstäver. Till exempel: mypackage, root, liucourse, tddc77 Klassnamn: Alla ord i namnet börjar med stora bokstäver. Till exempel: MyClass, AutoMobile, BusinessClass, NorthWest, Runnable, System Metodnamn:Alla ord i namnet börjar med stora bokstäver förutom första ordet. Till exempel: walkonwater, drivestraight, println, parseint Variabelnamn: Alla ord i namnet börjar med stora bokstäver förutom första ordet. Till exempel: totalnumber, favoritecolor, avergaeweight Alltid välj meningsfulla namn. x eller y är sällan bra namn. Ni kommer att snabbt glömma vad ni menade med smupti. För långa namn är också värdelösa.

Blanktecken(White spaces) Java användar blanktecken för att separera ord. Man kan formatera sin text på olika sätt. Man ska sträva efter att göra programmet så läsbart som möjligt

Blanktecken(White spaces) Java användar blanktecken för att separera ord Man kan formatera sin text på olika sätt Man ska sträva efter att göra programmet så läsbart som möjligt

Variabler

Variabler En variabel är en plats i datorminnet. Varje variabel har ett namn. Den används för att hålla ett datavärde. Skilj på variabelns namn (plats i datorminnet), och värdet den lagrar (värdet som står i platsen).

Variabler och Datatyper

Primitiva Data Typer Type Description Default Size boolean true or false false 1 bit byte two complement integer 0 8 bits char Unicode character \u0000 16 bits short two complement integer 0 16 bits int two complement integer 0 32 bits long two complement integer 0 64 bits float IEEE 754 floating point 0.0 32 bits double IEEE 754 floating point 0.0 64 bits void None/Nothing

Deklaration Variabler måste deklareras. Deklarationer associerar en typ (ex. int, float, String) till ett namn (Till exempel, int age) Namnet ska vara meningfult. Alla ord i namnet börjar med stora bokstäver förutom första ordet. Till exempel, String mycar, int totalvalue. Man använder final för att deklarera en konstant. Namnen på konstanter skrivs i stora bokstäver, t.ex: final double PI, final int MAXPLACES.

Task 2-3 minuter I terminalen: 1. Kom in i katalogen med cd lec02. 2. Skapa/öppna Variables.java i emacs med emacs Variables.java 3. Deklarera följande variablerna i main metoden: a. name b. height c. weight d. age e. dateofbirth 4. Bestäm typerna själva.

Literaler En literal är ett värde som skrivs direkt i koden. Literaler lagras också i primärminne som variabler. En literal har också en typ. När virtuella maskinen vill lagra en literal i minnet reserverar den ett block i minnet. Storleken på blocket bestäms av typen av literalen. Sedan lagrar den literalens värde i blocket och nämner också blocket med literalens värde. Tilldelning är ett sätt att ge en variabel ett värde. int a = 7; Minnet a 7 7

Typer på literaler Literal Type A, c, z char 11, 15, 2018 int 3.141519 float 3.141519f float 3.141519d double True, false boolean Hello TDDC77! String

Tilldelning ett sätt att ge en variabel ett värde. int a = 7; int b = 13; a = b; En variabel ska initialiseras med något värde innan den kan användas. Storleken på typen på högersidan ska vara alltid mindre än storleken på typen på vänstersidan.

Task 3-2 minuter I terminalen: 1. Kom in i katalogen med cd lec02. 2. Öppna Variables.java i emacs med emacs Variables.java 3. Initialisera alla skapade variablerna med lämpliga värden.

Task 4-2 minuter 1. 2. 3. Kom in i katalogen med cd lec02. Öppna Variables.java i emacs med emacs Variables.java Testa vilka av följande tilldelningar är giltiga, i main metoden? 1) int a = 3.3; 2) int b = 3.3d; 3) char c = 3; 4) short d = 3; 5) boolean e = 1; 6) String f= a ;

Tilldelning Left-side Right-side boolean boolean char char, short byte byte short char, byte int byte, char, short long byte, char, short, int float byte, char, short, int double byte, char, short, int, float

Utmatning: System.out.print och System.out.println Att skriva till skärmen, en fil, nätverk... alltså data som kommer från programmet. Brukar vara ganska lätthanterligt. System.out.print och System.out.println kommer ni att använda oftast.

Utmaning: println

Variabler och Datatyper

Utmatning: println

Att konkatenera sträng litteraler (string literals)

Task 5-2 minuter 1. 2. 3. 4. Kom in i katalogen med cd lec02. Skapa/öppna TestPrint.java i emacs med emacs TestPrint.java Skapa main metoden. Skriv ut 1 + 1 i main metoden? är utskrivna meddelandet exakt vad du förväntade?

Thanks for listening!