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

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

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

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

UML 1(5) Introduktion till Unified Modeling Language. 1 Bakgrund och historik

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

TDDD78 Introduktion till OOP i Java

Introduktion. Byggstenar TDBA

F2: Krav på objektorienterat språk

Programmering B med Visual C

Objektorientering: Lagring, räckvidd och livstid

Objekt-orienterad programmering. Klassbegreppet och C++ UML. UMLs fördelar

TDDD78, TDDE30, 729A Introduktion till objektorienterad programmering i Java

TDDD78 Objektorientering i Java, del 2

Objektorientering: Lagring och livstid

Objektorienterad programmering Föreläsning 4

TDDD78 Objektorientering: Lagring och livstid

Variabler, värden och typer

Variabler, värden och typer

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Inkapsling (encapsulation)

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

Objektorienterad Programmering (OOP) Murach s: kap 12-16

Föreläsning om OO, OOA och UML

Sammansatta datatyper Generics: Parametrisk polymorfism

729G75: Programmering och algoritmiskt tänkande. Tema 1, föreläsning 1 Jody Foo

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

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

Föreläsning 15: Repetition DVGA02

(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

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Klasser och objekt, referenser Grundkurs i programmering med Python

Imperativ programmering. Föreläsning 4

729G06 Föreläsning 1 Objektorienterad programmering

TDP005. Föreläsning 3 - UML. Filip Strömbäck

Ärvning av implementation. Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva?

Objektorienterad programmering. Grundläggande begrepp

Ingenjörsfirman Stéen Java Sida 1 av 1

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

TDDD78 Introduktion till OOP i Java

TDDD78, TDDE30, 729A Typhierarkier del 2 Vad krävs? Hur fungerar det?

Diagnostiskt Prov. Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas.

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

SMD 134 Objektorienterad programmering

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

Inledande programmering med C# (1DV402) Introduktion till C#

729G75: Programmering och algoritmiskt tänkande. Tema 3, föreläsning 2

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Objektorienterad programmering

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

TDDD78 Introduktion till OOP i Java

Objektorienterad analys och design

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

TDDC74 Programmering, abstraktion och modellering. Tentamen

Inledande programmering med C# (1DV402) Tärningarna ska kastas

Syfte : Lära sig objektorienterad programmering Syfte : Lära sig programmering i ett OO-språk vilket?

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

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

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

TDP005 Projekt: objektorienterade system

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Föreläsning 6: Metoder och fält (arrays)

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Översikt. Introduktion. Objektorienterad programutveckling UML UML. Analys Design. Klassdiagram Aktivitetsdiagram

Utvärdering av modelleringsvertyg som använder XMI/UML 2.0

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN Åbo, Finland url:

TDDD78, TDDE30, 729A Typhierarkier del 3 När och hur vill vi använda dem? Några Best Practices

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

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

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

TDDD78 Objektorientering i Java, del 3. Ärvning av implementation, inklusive abstrakta klasser Hur ska vi ärva? När ska vi ärva?

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT / 33

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorientering Klasser

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

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

Sätt att skriva ut binärträd

Programmering grundkurs

Objektorienterad programmering

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Arrayer (fält)

TDIU01 - Programmering i C++, grundkurs

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

1 Klasser och objektorientering Vad är objektorientering?

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Transkript:

Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? jonas.kvarnstrom@liu.se 2014 2017

jonas.kvarnstrom@liu.se 2014 2017 Perspektiv 1: Från verkligheten till objektorientering

Mojänger 3 Verkligheten innehåller mojänger

Mojängers egenskaper 4 Mojänger har ofta intressanta egenskaper Längd/höjd Färg Motorstyrka Toppfart Strömtålighet Maxfrekvens Antal pucklar Längd på ögonfransar egenskaper = properties, attributes

Mojänger som gör något 5 En del mojänger kan göra något Accelerera/decelerera Köra till en plats Slå på helljuset Stänga av vindrutetorkarna Släppa genom ström Gå till en plats Äta Spotta

Terminologi 6 Vi behöver terminologi! Vi har en mängd individer, objekt (bilen, bilen, ) Varje sort av objekt är en klass (klassen bilar, klassen kameler, ) Objekt är instanser av en klass Objekt som tillhör samma klass har samma egenskaper och funktionalitet (alla bilar har någon färg, kan köra) En objektorienterad syn på den fysiska världen

Organisation 7 När vi skriver program om/för mojänger autonoma bilar: Vi kan organisera dem som klasser! klass = class

Organisation 8 När vi skriver program om/för mojänger Googles autonoma bilar: Vi skapar objekt vid behov, genom att instansiera klassen: Varje bil har: Samma beteenden (kod) Samma egenskaper (längd, höjd) Egna värden (olika längd) instansiera = instantiate

jonas.kvarnstrom@liu.se 2014 2017 Perspektiv 2: Från datatyper till objektorientering

Primitiva datatyper 10 Alla språk har en eller flera primitiva datatyper, t.ex.: Heltal Flyttal Tecken Sanningsvärden Primitiv: grundläggande, ursprunglig, odelbar,

Sammansatta datatyper: Motivering 11 Nu vill vi lagra information om en bil Många egenskaper för varje bil Längd -- flyttal Höjd flyttal Toppfart heltal Färgkod heltal Ska ses som en enhet En funktion ska ta en bil som en parameter, inte 4: Behöver sammansatta datatyper sammansatta datatyper = composite datatypes Bil Längd flyttal Höjd flyttal Toppfart heltal Färgkod heltal

Sammansatta datatyper 12 Lösning 1: Använd generella sammansatta datatyper Från Python-kursen: Listor till allt! Enligt språket är datatypen inte bil utan lista "lista av vad som helst" Enligt språket har dessa samma typ: Generella listor! För att kontrollera om en lista är en bil: Uppfinn egen typkontroll! En lista är en bil om första elementet är strängen "bil

Sammansatta datatyper 13 Lösning 1: Använd generella sammansatta datatyper Från Python-kursen: Listor till allt! Olika värden är indexerade numeriskt Numrera om om värden tas bort eller läggs till

Sammansatta datatyper (3) 14 Lösning 2: Skapa nya typer Pascal: Poster (records) Posten har namngivna medlemmar (fält) (finns även i Python!) Kan deklarera en variabel av typ bil, inte av typ lista Tillåter statisk typkontroll Egenskapers värden tas fram via namn, inte via index post = record medlem = member fält = field

Sammansatta datatyper (4) 15 Nästa exempel: Datum Deklarera först en datatyp en "ritning", talar om hur typen ser ut Exempel i "C-liknande" språk: struct Skapa några instanser av typen allokerar minne Exempel i "C-liknande" språk

Sammansatta datatyper (5) 16 Fler exempel på sammansatta datatyper Vanliga, "fundamentala" typer Generella behållare Specialiserade typer för I/O, GUI, databasprogrammering, Och typer specifika för ett visst program Nu har vi samlat ihop information men hur bearbetar vi den?

Utan OO: Funktioner 18 Utan OO: Vi hanterar datumen med funktioner Exempel i "C-liknande" språk Vanlig syntax:

Utan OO: Exempel 19 Vår kod anrop Operationer på datum: Funktioner Inspekterar och manipulerar utifrån Själva posten består bara av passiva data!

OO 1: En utökning till poster 21 Med (klassbaserad) objektorientering: Post-typer blir klasstyper med två sorters medlemmar 1. Fält eller medlemsvariabler, precis som tidigare 2. Metoder eller medlemsfunktioner, nära kopplade till datatypen Exempel i "C-liknande" språk Vad vet ett datum? Vilken information finns? Vad kan ett datum göra? klass = class fält = field medlemsvariabel = member variable metod = method medlemsfunktion = member function

OO 2: Be objektet att göra något 22 Själva värdet kallas inte post utan objekt Objektet "manipulerar sig självt" Vår kod Vanlig syntax: Vi kan be datumet tala om för oss: Infaller du under ett skottår? Fundamental princip: Klassen bestämmer över sina objekt (kan förhindra manipulation utifrån) Grunden för ärvning, overriding, polymorfism, inkapsling,

jonas.kvarnstrom@liu.se 2014 2017 UML: Unified Modeling Language En mycket kort introduktion

Stora program 24 Program kan vara stora Rader kod enligt http://www.informationisbeautiful.net/visualizations/million-lines-of-code/ Unix 1.0: 10 000 Photoshop 1.0: 120 000 Windows 3.1: 2 500 000 Firefox: 9 700 000 Open Office: 23 000 000 Typisk bil, 2013 100 000 000 Google 2 000 000 000 (uppskattat) Hur håller man koll på detta? Metoder för modellering Visualisering av modeller kräver standardiserad notation

Historik 25 Tidigt 90-tal: Tre vanliga metoder och notationer för OO-modeller James Rumbaugh: Object-modeling technique (OMT) Grady Booch: Booch-metoden Ivar Jacobson: Object-Oriented Software Engineering (OOSE) : Anställda på samma företag, kända som The Three Amigos : För många metoder långsammare spridning av OO Ledde konsortium som skapade Unified Modeling Language, UML Ingen utvecklingsmetod ett (delvis visuellt) språk

UML-diagram 26

UML: Diagramtyper 27 Vi fokuserar på en enkel form av klassdiagram!

Enkelt klassdiagram 28 Strukturen hos en enskild klass:

Mer senare 29 Vi återkommer med utökade klassdiagram Relationer mellan instanser Relationer mellan klasser