Lektion 12. Talbas - Radix. Funktioner. Primitiva datatyper. Procedurer. Att anropa en metod. Repetition Genomgång av gammal tenta

Relevanta dokument
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

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

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

F4. programmeringsteknik och Matlab

DAT043 - Föreläsning 7

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

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

Java, klasser, objekt (Skansholm: Kapitel 2)

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

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

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

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

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

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

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

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

(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

TENTAMEN OOP

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Lösningar för tenta 2 DAT043,

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

TENTAMEN OOP

TDDC77 Objektorienterad Programmering

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

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

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

Enkla variabler kontra referensvariabel

Laboration 1 - Grunderna för OOP i Java

Överlagring, static, testning, formella metoder och undantag! Förelasning 13!! TDA540 Objektorienterad Programmering!

SMD 134 Objektorienterad programmering

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Tentamen OOP

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Classes och Interfaces, Objects och References, Initialization

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Föreläsning 2, vecka 8: Repetition

Del A (obligatorisk för alla)

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programmering DAT043

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

Repetition av OOP- och Javabegrepp

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

Objektorienterad Programmering (TDDC77)

LÖSNINGSFÖRSLAG TENTAMEN

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

JAVAUTVECKLING LEKTION 11

Repetition av OOP- och Javabegrepp

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Programmering A. Johan Eliasson

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Mer om klasser och objekt

Tentamen ID1004 Objektorienterad programmering October 29, 2013

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

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

DD1342 Programkonstruktion för F1,

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Språkkonventioner och redigering av tal.

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Generiska konstruktioner. Kursbokens kapitel 13

Föreläsning 5-6 Innehåll

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

Föreläsning 3-4 Innehåll

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Programmeringsteknik I

TENTAMEN OOP

JAVA Mer om klasser och objektorientering

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Parameteröverföring. Exempel. Exempel. Metodkropp

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

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Grundläggande programmering med C# 7,5 högskolepoäng

Objekt och klasser - Introduktion

Transkript:

Talbas - Radix Lektion 12 Repetition Genomgång av gammal tenta 123 10 = 1 10 2 + 2 10 1 + 3 10 0 = 100 + 20 + 3 = 123 1110 2 = 1 2 3 + 1 2 2 + 1 2 1 + 0 2 0 = 8 + 4 + 2 + 0 = 14 FA8 16 = 15 16 2 + 10 16 1 + 8 16 0 = 3840+160+8 = 4008 Bas (eller Radix): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Tillåtna tecken: 0 1 2 3 4 5 6 7 8 9 A B C D E F Radix kan alltså inte vara mindre eller lika med 0 Primitiva datatyper Typ Storlek Möjliga värden byte 8 bitar -2 7 till 2 7 1 short 16 bitar -2 15 till 2 15 1 int 32 bitar -2 31 till 2 31 1 long 64 bitar -2 63 till 2 63 1 char 16 bitar tecken i unicode-tabellen boolean 8 bitar true eller false float 32 bitar -3.40292347 10 38 till 3.40292347 10 38 double 64 bitar -1.7976313486231570 10 308 till 1.7976313486231570 10 308 Funktioner Returtypen är typen av det värde funktionen skall räkna fram En funktion måste avslutas med en return-sats. return uttryck; Return-satsen avbryter funktionen. Funktionens värde blir värdet av uttrycket Exempel: static int add(int a, int b) { return a+b; Procedurer Procedurer deklareras med returtypen void. En procedur måste inte avslutas med en return-sats. Om en return-sats används skall inget uttryck anges. Exempel static void skrivcos(double vinkel) { System.out.println(Math.cos(vinkel)); return; //behövs inte Att anropa en metod public class Metoder { //Funktions anrop int svar = add(2,5); System.out.println(add(2,5)); //Procedur anrop skrivcos(math.pi); public static int add(int a, int b) { return a+b; public static void skrivcos(double v) { double svar = Math.cos(v); System.out.println( Cos(v)= +svar); 1

Exempel på överbelastning public class OverbelastningsEx { static void skrivnågot(int x) { System.out.println( heltal ); static void skrivnågot(char c) { System.out.println( tecken ); static void skrivnågot(float x, Object o) { System.out.println(42); skrivnågot( A ); skrivnågot(132); skrivnågot(1.1, null); Metoderna skills alltså åt genom olika typer på argument och/eller med olika antal argument. Man kan inte skilja två metoder åt enbart genom returtyp. Arrayer & Matriser En array: [0] [1] [2] [3] [4] [5] Exempel: int a[] = new int[8]; int b[] = {1,2,3,4,5,6,7,8; En 5x4-matris: [0][0] [0][1] [0][2] [0][3] [1][0] [2][0] [3][0] [1][1] [2][1] [3][1] [1][2] [2][2] [3][2] Exempel: int c[][] = new int[5][4]; [1][3] [2][3] [3][3] [6] [0][4] [1][4] [2][4] [3][4] [7] Jämförelseoperatorer == Lika med!= Skilt ifrån < Mindre än > Större än <= Mindre eller lika med >= Större eller lika med Booleska operatorer!, && och Booleska operatorer användes på booleska uttryck (villkor) och variabler! betyder icke && betyder och betyder eller Lat evaluering Sanningstabell för!!true är lika med false!false är lika med true Samlingsslide för if-else, for och while Med villkor menas ett booleskt uttryck (dvs något som är antingen true eller false while-snurran while(villkor) { /* utför något så många gånger som man angett i villkoret */ if-else satsen if(villkor) { //utför något else if(villkor) { //utför något else { //utför något for-snurran for(initiering; villkor; uppräkning) { //utför något så många gånger som //man angett i villkoret Break och continue break Avslutar ett block (hoppar över alla rader nedanför breaksatsen i ett block) while(true) { //... if(slutanu) break; //... continue Fortsätter omedelbart med nästa varv i en snurra for(int i=0; i<a.length; i++) { if(a[i]==null) continue; //... Man kan använda return, men då hoppar man ur hela metoden 2

Konstruktorer En konstruktor konstruerar ett objekt En konstruktordeklaration ser ut på följande sätt: class Klassnamn { Klassnamn(argumentdeklarationer) metodkropp Konstruktorn används vanligtvis för att initiera instansvariabler Om ingen konstruktor deklareras tillhandahålls automatiskt en s.k. defaultkonstruktor Genom att utnyttja överbelastning kan man ha flera konstruktorer En konstruktor har samma namn som klassen, dessutom saknar den returtyp vilket är kännetecken som skiljer den från en vanlig metod operatorn this Åsyftar den här klassen Typiska användningsområden: Kunna använda samma namn på instansvariabel/klassvariabel och lokal variabel. Använda den egna klassen som argument till någon metod public class JavaClock implements ActionListener { private ClockGUI clockwin; public JavaClock(String bild) { clockwin = new ClockGUI(bild); clockwin.addactionlistener(this); Instansvariabler och instansmetoder En instansvariabel deklareras direkt i en klass (dvs ej i någon metod) Har-en relationen En instans av en klass har instansvariabler Instansvariablerna definierar egenskaperna unika för en instans av en klass En instansmetod verkar på en instans av en klass Exempel: String s = Goodbye World! ; System.out.println(s.length()); instansvariabler och instansmetoder deklareras utan nyckelordet static Klassvariabler och klassmetoder En klassvariabel är gemensam för alla instanser av en klass En klassvariabel deklareras på följande sätt: class Klass { static int klassvariabel; Går att komma åt från andra klasser på följande sätt: int x = Klass.klassvariabel; En klassmetod är en metod som alltid existerar Klassmetoder kan anropas utan att någon instans av klassen har skapats Klassmetoder associeras med en klass Klassvariabler och klassmetoder deklareras med nyckelordet static: static void klassmetod() { // etc. Modifierare Vid deklarationer av variabler, metoder och klasser kan man förrutom typ ange modifierare (ej lokala variabler) static anger klassvariabler och klassmetoder public offentlig variabel (el. metod) private privat variabel (el. metod) protected skyddad variabel (el. metod) final i samband med variabeldeklaration anger en konstant abstract abstrakt Andra modifierare: native, synchronized, transient, volatile class Kurs { public String kurskod; //private variabler ärvs inte ner public Kurs(String kurskod) { this.kurskod = kurskod; public void skrivtenta() { System.out.println("Skriv tenta på papper i kurs + kurskod); class SMD134 extends Kurs { private int antalelever; public SMD134(String kod, int antalelever) { super(kod); // Måste stå först this.antalelever = antalelever; public void skrivtenta() { System.out.println(antalElever + " elever skriver tenta i kurs "+kurskod); 3

Arv och överskuggning (forts) public class Arv { Kurs a = new Kurs("TST001"); Kurs b = new SMD134("SMD134", 36); SMD134 c = new SMD134("SMD134", 36); a.skrivtenta(); b.skrivtenta(); c.skrivtenta(); Resultat från körning Skriv tenta på papper i kurs TST001 36 elever skriver tenta i kurs SMD134 36 elever skriver tenta i kurs SMD134 abstract Enklare exempel abstract class Musik { abstract String typ(); // en abstrakt metod public void spelamusik() { System.out.println("Spelar musik på en " + typ()); // kan alltså anropa typ() eftersom jag VET att subklasserna kommer att ha // implementerat metoden typ (de tvingas till det för att inte själva bli abstrakta) class Trumpet extends Musik { String typ() { return "Trumpet"; class CDSpelare extends Musik { String typ() { return "CD-Spelare"; Interface - deklaration public interface Interfacenamn { konstantdeklarationer abstrakta metodhuvuden Att implementera ett interface class Klassnamn implements Interfacenamn { attribut och satser metoder implementation av samtliga metoder deklarerade i det implementerade interfacet public class TestException { try { System.out.println(dividera(6,0)); catch (DivByZeroException e) { System.out.println(e.getMessage()); static int dividera(int a, int b) throws DivByZeroException { try { return a/b; catch (ArithmeticException e) { throw new DivByZeroException("Division med noll"); class DivByZeroException extends Exception { public DivByZeroException(String e) { super(e); En övningstenta (del 1) Del 1 grundläggande teori och användande av Javadokumentation Fråga 1: Observera följande klasser public interface Högtalare { public void spelauppanalogsignal(); public interface Mikrofon { public String hämtaanalogsignal(); public interface Telefon extends Mikrofon, Högtalare { public void ring(string telefonnr); public void prata(); abstract class GSM { abstract byte[] tilldigital(string analogsignal); public final class Mobiltelefon extends GSM implements Telefon { //... ett flertal attribut och metoder 4

Fråga 1 : forts 1. Vad betyder det att Mobiltelefon är public? 2. Vad betyder det att Mobiltelefon är final? 3. Vad betyder det att Mobiltelefon extends GSM? 4. Vad betyder det att Mobiltelefon implements Telefon? 5. Vilka metoder måste finnas i Mobiltelefon? 6. Förklara begreppet interface 7. Förklara begreppet abstract (både för klasser och för metoder) Svar fråga 1 1. Det betyder att den är offentlig, man kan komma åt den från andra klasser och paket 2. Det betyder att den är slutgiltlig det går inte att ärva Mobiltelefon 3. Det betyder att Mobiltelefon ärver GSM dvs Mobiltelefon är en GSM. Detta betyder att egenskaperna som GSM har också gäller för Mobiltelefon. 4. Det betyder att Mobiltelefon använder gränssnittet Telefon dvs den uppfyller kraven för att få kallas Telefon. Ytterligare gäller att Mobiltelefon måste uppfylla kraven för att få kallas Mikrofon och Högtalare eftersom Telefon i sin tur använder gränssnitten Mikrofon och Högtalare. 5. De metoder som måste finnas är de abstrakta metoder som finns i GSM samt de metoder som finns definierade i Telefon, Mikrofon samt Högtalare public void spelauppanalogsignal() public String hämtaanalogsignal() public void ring(string telefonnr) public void prata() abstract byte[] tilldigital(string analogsignal) 6. interface är ett gränssnitt det används för att beskriva hur något skall se ut. Används ofta när man jobbar i grupp och de olika gruppmedlemmarna är ansvariga för olika delar av programmet. Man gör alltså ett gränssnitt för att i förväg bestämma hur man använder en del av programmet. 7. En abstrakt metod är en metod som saknar kod men som finns för att subklasser skall följa en viss standard. En abstrakt klass går inte att initialiseras, den innehåller ofta abstrakta metoder Fråga 2 Double uppg2 = Double.valueOf("2.9"); Betrakta ovanstående uttryck. Vilket värde och vilken typ för följande uttryck? 1.new Double(uppg2); 2.new Double(uppg2.doubleValue()).doubleValue(); 3.new Double(uppg2.doubleValue().doubleValue()); 4.new Double(uppg2.doubleValue()).intValue(); Svar: 1. Kommer inte att fungera. Det finns ingen konstruerare som tar en Double som argument 2. typ: double värde: 2.9 3. Kommer inte att fungera. Man kan inte anropa doublevalue() för en double 4. typ: int värde: 2 Fråga 3 Vad skrivs ut när följande program körs? public class Uppg3 { public static int b=4, c=42; public static int a[] = {9,8,7,6,5,4,3,2,1,0; funk(c,a,b); System.out.println(a[b]+c); static void funk(int a, int b[], int c) { b[c]=a; a=13; c=22; Svar: 84 5

Metoden valueof i klassen Integer Fråga 4 Vilka av följande uttryck leder till att det kastas ett Exception och vilket Exception kastas? Metoden indexof i klassen String 1.Integer a = Integer.valueOf("FF", 10); 2.Integer b = Integer.valueOf("-FF", 16); 3.Integer c = Integer.valueOf("FEL", 22); 4.Integer d = Integer.valueOf("", 2); 5.Integer e = Integer.valueOf("0",0); Svar: 1, 4 och 5 kastar NumberFormatException Metoden substring i klassen String Fråga 5 Skriv en metod som givet en e-postadress (som en sträng) returnerar det som står före @-tecknet som en sträng Svar: public static String mailnamn(string adress) { return(adress.substring(0,adress.indexof("@"))); 6