Objektorienterad programmering Föreläsning 4



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

TDIU01 - Programmering i C++, grundkurs

Data, typ, selektion, iteration

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Parameteröverföring. Exempel. Exempel. Metodkropp

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

SMD 134 Objektorienterad 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

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

TDDC77 Objektorienterad Programmering

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Objektorienterad programmering

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

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad Programmering (TDDC77)

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

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering A. Johan Eliasson

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

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

Enkla datatyper minne

Objektorienterad programmering Föreläsning 2

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

TDIU01 - Programmering i C++, grundkurs

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Objektorienterad programmering Föreläsning 11. Copyright Mahmud Al Hakim

JAVAUTVECKLING LEKTION 3

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Beräkningsvetenskap föreläsning 2

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

Lösningsförslag: Instuderingsfrågor, del A

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Objektorienterad programmering Föreläsning 5

Programmering B med Visual C

Klasser och objekt. Henrik Johansson. August 20, 2008

Övning2. Variabler. Data typer

Programmeringsteknik I

Det objektorienterade synsättet. Objekt. Datorprogrammet kan uppfattas som en slags modell av den verklighet programmet skall samverka med.

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

OOP Objekt-orienterad programmering

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Introduktion C-programmering

Objektorienterad Programmering DAT043

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

Repetition C-programmering

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

Classes och Interfaces, Objects och References, Initialization

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

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

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

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Programmeringsteknik med C och Matlab

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 I, VT2012. Rum

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

Språket Python - Del 1 Grundkurs i programmering med Python

Enkla variabler kontra referensvariabel

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

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

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

TDA550 - Objektorienterad programvaruutveckling, fk

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Winstrand Development

Agenda (obs! halvdag)

Pascal... Pascal. Pascal... Pascal...

TDDC77 Objektorienterad Programmering

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

Variabler använder man sig av för att under programkörningen spara data eller information i primärminnet. En variabel har typ, namn och värde.

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

DAT043 - Föreläsning 7

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

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

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

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.

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

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

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

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

TUTORIAL: KLASSER & OBJEKT

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

Innehållsförteckning

float Mindre rella tal ( floating point number ) double Rella tal/flyttal ( double precision floating point number )

Transkript:

Objektorienterad programmering Föreläsning 4 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webbacademy.se Agenda Introduktion till objektorientering Klasser och Objekt Instansvariabler Metoder Introduktion till UML, klassdiagram Datatyper (enkla typer och referenstyper) Tilldelning och typomvandling Mer om operatorer Copyright 2015 - Mahmud Al Hakim www.webacademy.se 2 1

Den klassiska bilden av ett datorprogram Programmets uppgift är att transformera ett dataflöde. indata utdata Det funktionsorienterade synsättet Copyright 2015 - Mahmud Al Hakim www.webacademy.se 3 Objektorientering Vid objektorienterad programmering bygger man upp sina program av ett antal väl avgränsade enheter som kallas objekt. Ett datorprogram är en modell av den verklighet programmet skall samverka med. De enskilda enheterna (objekten) är modeller av verkliga eller tänkta ting i programmets omgivning. Ett datorprograms uppgift är att manipulera objekten. I programmet använder man s.k. klasser för att avbilda och beskriva objektens egenskaper. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 4 2

Det objektorienterade synsättet Class Bil { } Class Fönster : Form { } Modeller av verkliga eller tänkta föremål Copyright 2015 - Mahmud Al Hakim www.webacademy.se 5 Objekt Varje objekt har en unik identitet. Man kommer åt objekt via namn, antingen direkt eller via referenser. Varje objekt beskrivs av sina tillståndsvariabler och operationer (metoder). Tillståndsvariabler används för att hålla reda på objektets tillstånd eller status. Varje objekt har en egen, unik uppsättning tillståndsvariabler som brukar gömmas inne i objektet. Tillståndsvariablerna kan förändras av objektet självt men är oåtkomliga utifrån. Detta kallas inkapsling (information hiding). Copyright 2015 - Mahmud Al Hakim www.webacademy.se 6 3

Exempel Objektet hissen Objektet beskriver en verklig hiss. Dess tillstånd kan beskrivas av två tillståndsvariabler: Riktning: kan ha något av värdena, stilla, uppåt och neråt Våning: kan innehålla ett heltal som anger vilken våning hissen är på. Tillståndsvariabler kallas även instansvariabler Copyright 2015 - Mahmud Al Hakim www.webacademy.se 7 Operationer (metoder) För ett objekt beskriver man också de operationer som man kan utföra på objektet. För objektet hissen kan det t.ex. finnas metoderna KörTill: används för att få hissen att köra till en viss våning. Stanna: används för att stoppa hissen. VilkenVåning: används för att ta reda på var hissen f.n. befinner sig. En sådan operation kallas för en metod eller instansmetod. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 8 4

Klass En klass är en mall, eller mönster, som beskriver hur objekt med samma uppbyggnad ser ut. En klass är en beskrivning av objekt. En klass ska du se som en byggritning. Objekt skapas från klasser. Det måste alltså finnas en klass innan man kan skapa ett objekt. Man kan ha olika klasser som beskriver olika sorters objekt. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 9 UML (Unified Modeling Language) UML är ett objektorienterat generellt språk för modellering av alla typer av system. Genom att skapa en modell av systemet som skall konstrueras blir det enklare att förstå och bygga det. UML innehåller regler för hur man visuellt presenterar klasser, objekt och andra ting som har med objektorientering att göra. Tips: http://www.uml.org Copyright 2015 - Mahmud Al Hakim www.webacademy.se 10 5

UML Klassdiagram Klassnamnet Hiss riktning: int våning : int Instansvariabler Metoder KörTill(v : int) Stanna() VilkenVåning(): int Copyright 2015 - Mahmud Al Hakim www.webacademy.se 11 UML Objektdiagram Ett objekt som tillhör en viss klass är en instans av klassen. Det kan finnas flera objekt som tillhör en viss klass. hissa : Hiss riktning = 1 våning =2 hissb : Hiss riktning = 0 våning =5 Två instanser av klassen Hiss Copyright 2015 - Mahmud Al Hakim www.webacademy.se 12 6

Deklarera klasser i C# Copyright 2015 - Mahmud Al Hakim www.webacademy.se 13 En klass som beskriver en person Vi ska nu konstruera en klass som beskriver en person. Några vanliga instansvariabler är ålder, vikt och längd. Exempel på operationer som en person kan ha/göra SättÅlder, FyllerÅr, SättVikt och SättLängd. Med hjälp av klassen kan vi även beräkna en persons BMI (Body Mass Index). Copyright 2015 - Mahmud Al Hakim www.webacademy.se 14 7

Klassen Person Copyright 2015 - Mahmud Al Hakim www.webacademy.se 15 Ett objekt av klassen Person p är ett objekt av klassen Person Med hjälp av metoderna ändrar vi objektets tillståndsvariabler Copyright 2015 - Mahmud Al Hakim www.webacademy.se 16 8

En metod som beräknar BMI http://sv.wikipedia.org/wiki/body_mass_index Copyright 2015 - Mahmud Al Hakim www.webacademy.se 17 Visa objektets BMI Copyright 2015 - Mahmud Al Hakim www.webacademy.se 18 9

Egenskaper (Properties) Egenskaper gör att man kan avläsa och ändra instansvariabler. Egenskaper kan ha en avläsare (get) och en ändrare (set). Ändraren har en underförstådd variabel med namnet value. När man deklarerar en egenskap som direkt motsvarar en instansvariabel brukar man låta egenskapen ha samma namn som instansvariabeln, fast med stor begynnelsebokstav. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 19 Copyright 2015 - Mahmud Al Hakim www.webacademy.se 20 10

Copyright 2015 - Mahmud Al Hakim www.webacademy.se 21 Typer Typer Värdetyper Variabler av värdetyp (värdevariabler) är en behållare som kan innehålla data Referenstyper Variabler av referenstyp (referensvariabler) används för att referera till objekt Copyright 2015 - Mahmud Al Hakim www.webacademy.se 22 11

Enkla typer bool char Numeriska typer Heltalstyper Flyttalstyper (tal med decimaler) byte sbyte float short ushort double int uint decimal long ulong Copyright 2015 - Mahmud Al Hakim www.webacademy.se 23 Integral Types Table (Från C# Reference) Type Range Size sbyte -128 to 127 Signed 8-bit integer byte 0 to 255 Unsigned 8-bit integer short -32,768 to 32,767 Signed 16-bit integer ushort 0 to 65,535 Unsigned 16-bit integer int -2,147,483,648 to 2,147,483,647 Signed 32-bit integer uint 0 to 4,294,967,295 Unsigned 32-bit integer long -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 Signed 64-bit integer ulong 0 to 18,446,744,073,709,551,615 Unsigned 64-bit integer http://msdn.microsoft.com/en-us/library/exx3b86w.aspx Copyright 2015 - Mahmud Al Hakim www.webacademy.se 24 12

Flyttalstyper (tal med decimaler) Typ Minsta till Största värde Storlek Noggrannhet float -3,4 10 38 till +3,4 10 38 32 bitar 7 siffror double -1,7 10 308 till +1,7 10 308 64 bitar 15-16 siffror decimal -7,9 x 10 28 till 7,9 x 10 28 128 bitar 28-29 siffror Typen decimal är lite speciell. Till skillnad mot float och double lagrar den talen exakt. Den kräver fler bitar och talområdet är inte så stort som för flyttalstyperna. Används i första hand för applikationer där man räknar pengar. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 25 MinValue och MaxValue För alla typer gäller att man kan använda egenskaperna MinValue och MaxValue för att få reda på det minsta resp. största tal som kan lagras i en variabel av typen. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 26 13

Literaler Man behöver ofta ange konstanta värden i ett uttryck tex. x + 12.6 i / 10 Sådana konstanta värden kallas literaler. I uttrycken ovan är 10 en heltalsliteral och 12.6 en reell literal. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 27 Tilldelning och typomvandling variabelnamn = uttryck; Uttrycket till höger beräknas först. Dess värde placeras sedan i variabeln till vänster. Uttrycket måste ha samma typ som variabeln eller automatiskt kunna omvandlas till denna typ (implicit typomvandling) t.ex. int i; double d; d = i; // OK, ofarlig typomvandling, int ryms i double i = d; // FEL, farlig typomvandling!!! Copyright 2015 - Mahmud Al Hakim www.webacademy.se 28 14

Explicit typomvandling (cast) Om man vill göra farliga typomvandlingar måste man använda en explicit typomvandling s.k. cast. Då skriver man inom parentes framför uttrycket i högerledet vilken typ man vill att uttryckets värde skall omvandlas till, t.ex. i = (int) d; // OK, explicit typomvandling OBS! När man omvandlar från reell typ till heltalstyp kapas decimalerna. Vi får inte avrundning. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 29 Sammansatta tilldelningar x += y x -= y x *= y x /= y x %= y Samma som x = x + y Samma som x = x - y Samma som x = x * y Samma som x = x / y Samma som x = x % y Copyright 2015 - Mahmud Al Hakim www.webacademy.se 30 15

Typen char För att lagra ett tecken i datorn brukar man oftast använda en grupp som består av 8 bitar (en byte). Med hjälp av 8 bitar kan man bilda 256 olika tecken. I C# används Unicode 16 bitar (s.k. BMP*), vilket kan koda 65536 tecken. Variabler av standardtypen char är i C# 16 bitar långa. Teckenvärden (teckenliteraler) skrivs omgivna med apostrofer t.ex. char ch1 = 'A'; * BMP: Basic Multilingual Plane Copyright 2015 - Mahmud Al Hakim www.webacademy.se 31 Referenstyper Klasstyper i C# är referenstyper. När man deklarerar en variabel av en referenstyp så får man inte ett objekt, utan en referens. Denna referens kan sedan användas för att komma åt objektet, t.ex. Hiss h1; h1 är en referensvariabel som har förmågan att referera till hissar. h1 har typen referens till Hiss. För att få h1 att referera till ett objekt måste vi först skapa ett objekt (skapa en instans av klassen Hiss) t.ex. h1 = new Hiss(); Copyright 2015 - Mahmud Al Hakim www.webacademy.se 32 16

Identifierare Namn på saker och ting i ett program brukar med ett finare ord kallas för identifierare. En identifierare för vara godtyckligt lång och kan bestå av bokstäver, siffror och understrykningstecken. En identifierare får inte börja med en siffra. Stora och små bokstäver betraktas olika. Man får inte använda de reserverade orden som namn Tips, en lista på alla keywords finns här: http://msdn.microsoft.com/en-us/library/x53a06bb.aspx Klassnamn och metodnamn brukar inledas med en stor bokstav. Variabler brukar inledas med en liten bokstav. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 33 Numeriska uttryck I program förekommer ofta uttryck där man beräknar numeriska tal. Sådana utryck kallas numeriska uttryck. I dessa kan man använda de vanliga matematiska operationer Addition + Subtraktion Multiplikation * Division / Den vanligaste formen har två operander t.ex. x + y Copyright 2015 - Mahmud Al Hakim www.webacademy.se 34 17

Heltalsdivision och operatorn % Vid division, om någon av operanderna är ett reellt tal då sker vanlig division och resultatet blir ett reellt tal. Om båda operanderna är av heltalstyp t.ex. int så utförs s.k. heltalsdivision. Det betyder att man ser hur många gånger den högra operanden går i den vänstra. T.ex. int x = 14; int y = 5; Uttrycket x/y ger resultatet 2 (5 går 2 gånger i 14). För att få fram resten vid heltalsdivision används operatorn % Uttrycket x%y ger resultatet 4 Copyright 2015 - Mahmud Al Hakim www.webacademy.se 35 Prioritet * / och % har högst prioritet. + och - har lägst prioritet. I ett komplicerat uttryck bestämmer de olika operatorernas prioriteter i vilken ordning uttrycket beräknas. Operatorer med högre prioritet beräknas före operatorer med lägre prioritet. Om två operatorer har samma prioritet sker beräkningen från vänster till höger. T.ex. -2+4/2*3 = 4 Man kan använda parenteser för att styra beräkningsordningen. T.ex. (-2+4)/2*3 = 3 Copyright 2015 - Mahmud Al Hakim www.webacademy.se 36 18

Öknings- och minskningsoperatorer Följande satser kan med hjälp av operatorerna ++ och -- skrivas enklare i = i + 1; i++; k = k - 1; k--; Öknings- och minskningsoperatorer finns i två varianter 1. Postfix t.ex. i++; 2. Prefix t.ex. ++i; Copyright 2015 - Mahmud Al Hakim www.webacademy.se 37 Operatorerna ++ och -- som postfix Copyright 2015 - Mahmud Al Hakim www.webacademy.se 38 19

Operatorerna ++ och -- som prefix Copyright 2015 - Mahmud Al Hakim www.webacademy.se 39 Typen bool Typen bool används för att beskriva sanningsvärden. Har enbart två tillåtna värden, false och true. En instansvariabel av typen bool som inte explicit initieras får automatiskt värdet false. Typen bool används mest i samband med jämförelser. Förekommer bl.a. i if-satser och while-satser. Ett jämförelseuttryck har typen bool och bildas med hjälp av jämförelseoperatorer. Copyright 2015 - Mahmud Al Hakim www.webacademy.se 40 20

Jämförelseoperatorer == Lika med!= Icke lika med < Mindre än <= Mindre än eller lika med > Större än >= Större än eller lika med Copyright 2015 - Mahmud Al Hakim www.webacademy.se 41 Logiska operatorer Man kan bilda s.k. logiska uttryck med hjälp av operatorerna && utför operationen och utför operationen eller! utför operationen icke A && B sant om både A och B är sanna A B sant om minst en av A eller B är sanna!a sant om A är falsk Ex. (temp>20 && temp <30) Copyright 2015 - Mahmud Al Hakim www.webacademy.se 42 21