Objektorientering.

Slides:



Advertisements
Liknande presentationer
Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
Advertisements

Avlusning Debugger (”avlusare”) Breakpoints Watch.
Relationsoperatorer Java/C# C/C++ Visual Basic FORTRAN PASCAL ORACLE
Svenska Akademins Ordbok (SAOB)
9. Gör ritningen innan Du bygger huset
10. Elementen i strukturerad programmering
Klasser och objekt.
Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.
Datatyper C# C/C++ Java VB Fortran Pascal bool boolean Boolean
Klassarv och inkapsling
Föreläsning 1.
Filhantering Grundprincipen för filhantering Öppna filen
Föreläsning 4 Python: mera om funktioner och parametrar
Arv.
Inkapsling.
Objektorienterad tänkande
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Att programmera i språket Java
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
IT för personligt arbete F6
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
i olika programmeringsspråk
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Objektbaserad programmering –Grundläggande om klasser och objekt – (Arv får vänta)  Iden med klasser.
Programmering B PHP Lektion 2
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Repetition inför slutprovet
Programmering B PHP Lektion 3
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
1 ITK:P1 Föreläsning 7 Algoritmer och datastrukturer DSV Marie Olsson.
Polymorfism.
Räckvidd och synlighet. Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 22 Synlighet (meddelandesändning) Det.
Arv.
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Databehandling Ett datorprogram består i huvudsak av
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Föreläsning 1. Innehåll Introduktion till objektorientering –OOP (objektorienterad programmering) –Objekt, instanser, klasser C++ –OO i C++ –Standardbibliotek.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
Föreläsning 4 Klasser Och Objekt.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Länkade listor Binära träd
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
Programmering i C# Laborationer.
Program. Symboliska samband Symboliska beteenden Matematisk kausalitet (orsak – verkan) 2x = y, y = x^2, y = kx + l.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
OOP&M - teori1 OOP&M – Föreläsning 3 kap 2-4 Repetition Föreläsning-datayper-syntax-tilldelning.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Python.
Föreläsning 8: Exempel och problemlösning
Presentationens avskrift:

Objektorientering

Inledning Objektorienterad programmering är inte bara tillägg till programmeringsspråk, det är snarare ett nytt sätt att tänka Objektorienterad programmering ser på ett program som en grupp av agenter, kallade objekt. Varje objekt har ansvaret för en specifik uppgift. Ett objekt är en inkapsling av tillstånd (attribut) och beteenden (operationer), tillsammans kallade egenskaper. Beteendet för objekt bestäms av objektets klass. Ett objekt visar sitt beteende genom att utföra en metod (jfr med funktion eller procedur) som svar på ett meddelande. Objekt och klasser utvidgar tankarna kring ”abstrakta datatyper” (ADT), genom möjligheterna till arv.

Objektorientering En grundteknik Definition: kan byggas på och anpassas kan appliceras på olika slags system kan användas vid olika teknikområden konsistent modellspråk i alla utvecklingsfaser Definition: Objektorientering är ett grundläggande sätt att betrakta systemutveckling som ändrar den tidigare uppdelningen i data och funktioner till en enhetlig modell i objekt (innehållande både data och funktioner), relationer mellan objekt och samarbete mellan objekt

En objektorienterad process är iterativ analys, design, konstruktion och test upprepade gånger (analys och design bör ta minst 1/3 av tiden) högre och högre detaljeringsgrad för varje iteration är inkrementell någonting synligt levereras efter varje iteration en delfunktion/komponent utvecklas (iterativt) systemet byggs på vartefter med fler delfunktioner/komponenter

Iterativ och inkrementell utveckling Design Utveckling Implementation Analys Förstudie Inkrement

Vattenfall eller iterationer Planning Requirements Analysis Design Implementation Test Deployment Evaluation Programmering! Observera att programmeringen vanligvis blir mer ”integrerad” på detta sätt med den övriga systemutvecklingen när vi använder OO! Dvs, lite kodning i varje varv, för det som kommit fram i analys och design i varvet…

Analys och design Den viktigaste delen i objektorienterad systemutveckling är analys och design Analys undersökning av problem och behov ”do the right thing” Design Konceptuell lösning för att uppfylla behovet ”do the thing right” OBS! Lösningen är inte detsamma som lösningens implementation!

Analys och design Objektorienterad analys Objektorienterad design Hitta och beskriv objekt, klasser och andra koncept Objektorienterad design Detaljutforma klasserna för systemet, samt scheman för hur deras objekt samverkar Därefter börjar kodningen…

En objektorienterad modell Hela systemet består av ett antal objekt Objekten i modellen svarar mot konkreta företeelser i användarens värld fastighetsobjekt telefonobjekt skrivarobjekt bilobjekt

Ett objekt per förekomst

Klasser och objekt Ett objekt är en instans av en klass. Hur ett objekt tillhandahåller en specifik tjänst (operation) definieras av vilken klass objektet är en instans av. Samtliga instanser av en specifik klass har samma metod (kod) för en specifik tjänst (operation), men för sina egna data.

Meddelandesändning mellan objekt a:ClassOne b:ClassTwo svar := beräknaSumma(a,b) : int [svar] Vad är summan av 2 plus 3? 5! class ClassTwo { int beräknaSumma(int a, int b) return a + b; }

Meddelandesändning mellan objekt a:Person b:Person svar := FrågaNamn() : string [svar] Vad heter Du? Nisse! class Person { string namn; string FrågaNamn() return namn; }

Språkgenerationer 1950 1960 1970 1980 1990 2000 2010 Naturliga språk 4GL Objektorienterade språk Högnivåspråk Assembler Maskinkod 1950 1960 1970 1980 1990 2000 2010 FORTRAN RPG PROLOG VB VB ALGOL APL MODULA-2 VB.NET COBOL LOGO MODULA-3 LISP FORTH OBERON PILOT PASCAL EIFFEL BASIC C C++ JAVA C# ADA PL/1 SMALLTALK SIMULA

Objekt: data och metoder Dataorienterad programmering Funktionsorienterad programmering Data Metoder Objekt Objektorienterad programmering Data Metoder

Vad är objekt? Data Metoder (algoritmer) Bil class Bil { string regnr; float liter; float km; } static float förbrukning (Bil b2) { return b2.liter/b2.km*10; } Bil regnr liter km förbrukning()

Objektorientering En klass class Bil { string regnr; float liter; float km; } En klass är en “ritning” eller en “mall” som beskriver objekten. Klassen reserverar inget minnesutrymme för data utan varje objekt har sitt eget datautrymme. float förbrukning () { return liter/km*10; } Ett objekt innehåller variabler och metoder. Värdet av variablerna definierar objektets tillstånd och metoderna definierar objektets beteende. ... Bil b2 = new Bil(); En klass beskrivs i programkoden medan objekten skapas och existerar under exekveringen av programmet.

Objektet Bil regnr:string liter:float km:float forbrukning():float minBil:Bil Privat minne (för att lagra data) regnr = ”NHG 084” liter = 2977 km = 61267 Instruktioner (för att bearbeta data) float forbrukning () { return liter/km*10); } class BilTest { public static void Main (string[] args) { Bil minBil = new Bil(); minBil.regnr = ”NHG084”; minBil.liter = 2977; minBil.km = 61267; System.Console.WriteLine(minBil.forbrukning()); }

Varje objekt har en livscykel Bil minBil = new Bil(“NHG084”); Vi instantierar ett objekt… Bil (string r) { regnr = r; } Konstruktorn körs… …och objektet är skapat. Därefter kan objektet förändras… …och tas bort… Bil minBil = null; …fast i Java eller C# tas objektet verkligen bort först när sopgubben (GC) varit framme (I C++ måste du själv agera sophanterare)…

Meddelanden i ett objektorienterat system avsändare Nisse:Person mottagare meddelande argument minBil.kör (”fort”); ”Metoden” är den kod som exekveras när just ”minBil” får meddelandet ”kör” minBil:Bil operation kör(hastighet)

Meddelandesändning primärminnet NisseTest Person Bil Nisse:Person class Person { Bil minBil = new Bil(); } primärminnet Main( :string[] ) NisseTest void åkTillJobbet () { minBil.kör(”fort”); } class Bil { } Person Bil void kör (string hastighet) { // wrooom... } åkTillJobbet() kör( :string ) class NisseTest { static void Main (string[] args) { Person Nisse = new Person(); } Nisse:Person minBil:Bil Nisse.åkTillJobbet();

Jag har dessa variabler Objektet sett inifrån Varje metod är en sekvens av instruktioner som exekveras som svar på ett meddelande Det finns en metod för varje operation i protokollet Med ”objektets protokoll” avses den samling operationer ett objekt har Endast meddelanden i protokollet får sändas till ett objekt :Dokument Jag har dessa variabler attribut (privat minne) skrivUt() författare() status() Kod för skrivUt() operationer Kod för författare() Kod för status() metoder

Kom ihåg att… Börja i rätt ände! Liksom i strukturerad programmering, är det genom att ”lösa problemet” innan kodningen. Analys och Design! Den strukturerade programmeringen kommer igen även i objektorienterad programmering. Vad skall den enskilda metoden i en klass göra? Löses med: Selektion Iteration Sekvens (som kan vara ett meddelande till ett annat objekt)