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

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

Objektorientering: Lagring, räckvidd och livstid

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!

TDDD78 Introduktion till OOP i Java

Objektorientering: Lagring och livstid

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

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

F2: Krav på objektorienterat språk

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

Programmering B med Visual C

TDDD78 Objektorientering i Java, del 2

Introduktion. Byggstenar TDBA

TDDD78 Objektorientering: Lagring och livstid

Viktiga programmeringsbegrepp: Kontrakt

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

Variabler, värden och typer

Objektorienterad programmering Föreläsning 4

Sammansatta datatyper Generics: Parametrisk polymorfism

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

Inkapsling (encapsulation)

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

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

Föreläsning 15: Repetition DVGA02

Variabler, värden och typer

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

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

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

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

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

729G06 Föreläsning 1 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

Imperativ programmering. Föreläsning 4

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

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

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

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

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Personal Objektorienterad programmeringsmetodik 5DV081 5DV109

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, allmänt

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

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

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

Objektorienterad programmering. Grundläggande begrepp

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Föreläsning om OO, OOA och UML

TDDD78, TDDE30, 729A85 Objektorienterad programmering och Java

Objektorienterad programmering

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

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

Objektorienterad analys och design

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

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

TDDC74 Programmering, abstraktion och modellering. Tentamen

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

Objektorienterad analys och design

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

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

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

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

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

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

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

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

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

Objektorienterad programmering

Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag

Ingenjörsfirman Stéen Java Sida 1 av 1

SMD 134 Objektorienterad programmering

Introduktion till programmering SMD180. Föreläsning 9: Tupler

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

Objektorienterad programmering i Java

Objektorienterad programmering

Klasser och objekt, referenser Grundkurs i programmering med Python

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

TDDD78 Introduktion till OOP i Java

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

1 Klasser och objektorientering Vad är objektorientering?

TDDD78 Introduktion till OOP i Java

Introduktion till programmering och Python Grundkurs i programmering med Python

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

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Tentamen i Objektorienterad modellering och diskreta strukturer

TDDD78 Viktiga begrepp, del 2

Programmering = modellering

TDDE44 Programmering, grundkurs

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

Sätt att skriva ut binärträd

Klassdeklaration. Metoddeklaration. Parameteröverföring

+Överskådlighet Normalt sätt blir ett program skrivet i det procedurella paradigmet överskådligt. Modifikationer på delproblem kan ske med lätthet.

TDIU01 - Programmering i C++, grundkurs

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

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

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

Objektorienterad Programmering (TDDC77)

Transkript:

Introduktion till objektorientering Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten? TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se 2014 2019

TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se 2014 2019 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

TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se 2014 2019 Perspektiv 2: Från datatyper till objektorientering (Klassbaserad 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: Använd en mappning Python: dict Namngivna värden Fortfarande ingen egen typ för bilar Ingen standard för vilka data som finns om alla bilar Ingen möjlighet att kontrollera att rätt data anges / används

Sammansatta datatyper (4) 15 Lösning 3: Skapa nya typer med fält 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 (5) 16 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 (6) 17 Fler exempel på sammansatta datatyper Vanliga, "fundamentala" typer Generella behållare Specialiserade typer för I/O, GUI, databaser, Och typer specifika för ett visst program

Datatyper som begrepp i programspråk 18 Varje ny datatyp blir ett nytt meningsfullt begrepp! Vi samlar ihop information och ger den också ett namn Nya ord införs i vårt programmeringsspråk (, ); inte fast i språkets egna begrepp (lista, dict, ) Vi kan lättare skriva kod, förstå existerande kod: Begreppen kan anpassas mer till hur vi tänker ( en kund, inte en lista med dessa 17 kundrelaterade värden ) Söndra och härska (divide and conquer)! Dela upp programmeringen i delar av lämplig storlek Se till att varje enskild del kan förstås i detalj Nu har vi samlat ihop information men hur bearbetar vi den?

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

Utan OO: Exempel 21 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 23 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 24 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,

Klasser som begrepp 25 Varje klass blir ett djupare begrepp! Detta är en sträng, och alltså kan den : Helhetsförståelse för vad ett objekt vet och vad det kan göra Söndra och härska mellan olika datatyper Men samla ihop kod och information inom en och samma datatyp

Bra: Hög cohesion = sammanhållning 26 Klassens funktionalitet ska vara meningsfull och hänga ihop Bör gå att ge en kort sammanfattning av klassen "En List är en sekvens av godtyckliga element" "En LayoutEngine kan göra en specifik typ av layout för ett Diagram" List: Lägga till, ta bort, sortera, Många funktioner, men god sammanhållning

Cohesion (2) 27 "En MiscWorker genererar slumptal, sparar filer och visar hjälptexter"? Något är troligen fel Tre olika typer av funktionaliteter Kanske ska bryta ut delar till andra klasser

Cohesion (3) 28 Men: Överdriv inte uppdelningen! Exempel: lagrar data i ordnad listform skriver ut listor sorterar listor slumpar ordningen i en lista Klasserna blir tätt kopplade, beroende av varandra Varje extra klass ger ytterligare ett begrepp att hålla reda på, utan någon tydlig vinst För mycket! Listfunktionerna borde vara tillräckligt sammanhängande för att vara en klass lagrar och manipulerar listor av element

TDDD78, TDDE30, jonas.kvarnstrom@liu.se 729A85 jonas.kvarnstrom@liu.se 2014 2019 UML: Unified Modeling Language En mycket kort introduktion

Stora program 30 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 Open Office: 23 000 000 Firefox: 36,890,150 (9 700 000) Typisk bil, 2013 100 000 000 Google, 2015 2 000 000 000 (uppskattat) Hur håller man koll på detta? Metoder för modellering Visualisering av modeller kräver standardiserad notation

Historik 31 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 32

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

Enkelt klassdiagram 34 Strukturen hos en enskild klass:

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