Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004



Relevanta dokument
Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

OOP Objekt-orienterad programmering

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

Objektorienterad programmering D2

Programmering A. Johan Eliasson

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

SMD 134 Objektorienterad programmering

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Objektorienterad programmering i Java

Tentamen OOP

Tentamen, EDAA20/EDA501 Programmering

Input. Programmering. Andra källor

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

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

Omdirigering. Omdirigering

Tentamen i Objektorienterad programmering

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

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

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

DAT043 Objektorienterad Programmering

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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.

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

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Objektorienterad Programmering (TDDC77)

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

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

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

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

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

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

I ett program hantera man ofta samlingar av objekt av samma typ.

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

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

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

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

Laboration 4: Digitala bilder

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

Chapter 3: Using Classes and Objects

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 10. ADT:er och datastrukturer

OOP Objekt-orienterad programmering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Lektion 1 - Programmeringsteknik F1, ht 2003

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...

Att använda pekare i. C-kod

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

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

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Repetition av OOP- och Javabegrepp

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Repetition av OOP- och Javabegrepp

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

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

Föreläsning 6: Introduktion av listor

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

(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

Typkonvertering. Java versus C

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Föreläsning 1 & 2 INTRODUKTION

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

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Föreläsning 9: Arv och UML

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

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

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

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

Föreläsning 2, vecka 8: Repetition

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning REPETITION & EXTENTA

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

TDDD78 Viktiga begrepp, del 2

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

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

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

PROGRAMMERING-JAVA TENTAMINA

Föreläsning 8: Exempel och problemlösning

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Administrivia. hh.se/db Verónica Gaspes (Kursansvarig) 2 Mattias Enervall (Övningsassistent) Examination. 1 Skriftlig tentamen (betyg)

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

DELPROV 1 I DATAVETENSKAP

TENTAMEN OOP

Anteckningar 1: Grundläggande saker

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

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

Dugga Datastrukturer (DAT036)

Transkript:

Programmering hh.se/db2004 Föreläsning 10: Objektorienterad programmering - datatyper Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Påminnelse: en datatyp för bilder Vad är en bild? För att kunna göra bildbehandling, som till exempel i en digitalkamera, kan man tänka på en bild som en matris av färgpunkter (pixels). Pixlar Högst upp till vänster: rad 0, kolumn 0 Längst ner till höger: rad 4, kolumn 6 Bredd: 7 kolumner Höjd: 5 rader I varje ruta, en referens till ett färgobjekt Center for Research on Embedded Systems IDE-sektionen 1 / 21 2 / 21 En datatyp för bilder Spegelbild API public class Picture datatyp för bildbehandling Picture(String s) skapa en bild från en fil Picture(int w, int j) skapa en w ggr h tom bild int width() bildens bredd int height() bildens höjd Color get(int i, int j) färgobjekt i pixel (i,j) void set(int i, int j, Color c) bestäm färgobjektet i pixel (i,j) till c void show() visa bilden i ett fönster void save(string s) spara bilden till en fil För ett visst y återfinns färgpunkten i x i width 1 x 3 / 21 4 / 21

Spegelbild En metod private static Picture flipx(picture p){ int w = p.width(); int h = p.height(); Picture pic = new Picture(w,h); for(int x = 0; x<w;x++){ for(int y = 0; y<h; y++){ pic.set(x,y,p.get(w-x-1,y)); return pic; 5 / 21 En liten sammanfattning om objekt En typ är en mängd värden och de operationer man kan göra med dessa värden. I Java kan man använda klasser för att definiera nya datatyper (vi kommer att definiera våra egna i nästa föreläsning, idag fortsätter vi att se hur dessa datatyper används). Värden (motsvarar literaler i primitiva typer) För att skapa objekt måste man använda det reserverade ordet new tillsammans med datatypens konstruerare (den heter exakt som klassen och kan ha argument). Operationer (är metoder som klassen erbjuder) För att tillämpa en operation använder man objektets namn, punktoperatorn och metodens namn (med eventuella argument). 6 / 21 Exempel Vi har tittat på både färger och bilder: vi har diskuterat vilka ideer som ligger bakom klassernas API. Fast vi inte vet hur dessa ideer är implementerade har vi kunnat skriva klientprogram. Referenstyper Både fält och datatyper som implementeras med klasser (String, Color, Picture,.... Alltså alla typer som inte är primitiva) delar vissa egenskaper som vi sammanfattar nu. Referenser är namn Ett objekt och dess namn Ta mitt hus som objekt. Jag skriver adressen på ett papper och ger det till en hantverkare. Det som står på papperet ändras inte när hantverkaren förändrar mitt hus, till exempel genom att måla det rosa. Jag skulle till och med kunnat ha skrivit flera lappar som jag delade ut till flera hantverkare! När rörmokaren kommer efteråt för att sätta in ett badkar så är huset rosa! I kod Picture a = new Picture("baboon.jpg"); Picture b = a; a.set(i,j,color1); b.set(i,j+1,color1); Tilldelningen kopierar namnet! Metoderna ändrar samma objekt! 7 / 21 8 / 21

Oföränderliga objekt Att jämföra objekt Vill man att objekt av en viss typ inte skall kunna ändras så erbjuder man inga metoder som kan förändra objekt. Till exempel så är färger och strängar oföränderliga. (Vi tittar på strängar senare idag). APIn för bilder erbjuder metoden set som gör att en bild kan förändras. Bilder är föränderliga objekt! När man använder == med referenser (namn) kollas det om de pekar (namger) samma objekt. Metoden kollar inte om objekten har samma värde! I kod Color a = new Color(142, 213, 87); Color b = new Color(142, 213, 87); Color c = b; a==b är falsk medan b==c är sann! Kolla APIn för klassen Color: det finns en metod equals för att jämföra färgvärden! Både a.equals(b) och b.equals(c) är sanna. 9 / 21 10 / 21 En till datatyp: strängar Vad är en sträng? En sträng är en indicerad följd av char-värden. Strängar dyker upp i många tillämpningar eftersom vi kommunicerar med många program med strängar (t ex kommandoraden, textfiler), många program hanterar strängar (t ex blogg, mail) och man använder strängar för att modellera saker (t ex i molekylärbiologi). DNA Strängar med tecken A, C, T och G. 11 / 21 En datatyp för strängar API public class String Ur Javas datatyp för strängar String(String s) int length() char charat(char i) String substring(int i, int j) boolean contains(string sub) boolean startswith(string pre) boolean endswith(string post) int indexof(string p) int indexof(string p, int i) String concat(string t) int compareto(string t) String replaceall(string a, String b) String[] split(string delim) boolean equals(string t) 12 / 21

Strängar i Java Språkstöd Java erbjuder lite stöd för strängar, till exempel literaler så att man slipper använda konstruerare och operator + så att man slipper använda metoden concat. Ett String-värde är inte samma sak som ett fält av char! Skillnad i kod - fält for(int i = 0; i<a.length; i++) {... a[i]... Strängar i Java Varför detta? Det är inte ovanligt att program bearbetar jättelånga strängar eller massor med strängar. Klassen String erbjuder många användbara metoder och gör det på ett effektivt sätt! Skillnad i kod - strängar for(int i = 0; i<s.length(); i++) {... s.charat(i)... 13 / 21 14 / 21 Palindrom? private static boolean ispalindrome(string s){ int N = s.length(); for(int i = 0; i< N/2; i++){ if(s.charat(i)!= s.charat(n-1-i)){ return false; return true; Palindrom? private static boolean ispalindrome(string[] a){ // all elements in s together String s = ""; for(int i = 0; i<a.length; i++){ s = s.concat(a[i]); return ispalindrome(s); 15 / 21 16 / 21

Filnamn och efternamn private static String[] filenameandsurname(string filename){ String[] result = new String[2]; int dot = filename.indexof("."); result[0] = filename.substring(0,dot); result[1] = filename.substring(dot+1, filename.length()); return result; Radutskrifter private static void printalllineswith(string query){ while(!stdin.isempty()){ String line = StdIn.readLine(); if(line.contains(query)){ System.out.println(line); 17 / 21 18 / 21 Vad är en gen? Genomik I genomik representerar man ett genom som en sträng med tecken från {A, C, T, G Gener En gen är en delsträng av ett genom som har en funktion. Dessa delsträngar är sådana att 1 delsträngen ATG föregår dem (start codon) 2 de består av en multipel av 3 nukleotider (bokstäver) 3 en av delsträngarna TAG, TAA eller TGA efterföljer dem. (stop codon) Hitta alla gener! Läs in en genom från standard input och skriv ut alla gener. Start codon och stop codon skall anges på kommandoraden. 19 / 21 Hitta alla gener! 1 Läs in genomet 3 tecken i taget! 2 Om man ser ett start codon, kommer man ihåg platsen! 3 Om man ser ett stop codon och är mitt i en möjlig gen (alltså har man sett en start codon) skriver man ut genen! 4 Man måste hitta ett sätt att skilja mellan att man har sett ett start codon eller inte: eftersom alla heltal >= 0 kan markera positionen av en start codon kan vi använda -1 för att markera att vi börjar leta efter en sådan! 20 / 21

Hitta alla gener int beg = -1; for (int i = 0; i < genome.length() - 2; i++) { String codon = genome.substring(i, i+3); // start codon if (codon.equals(start)) beg = i; // stop codon if ((codon.equals(stop)) && beg!= -1) { // check putative gene alignment String gene = genome.substring(beg+3, i); if (gene.length() % 3 == 0) { System.out.println(gene); beg = -1; 21 / 21