23
Python Objektorienterad programmering (och modellering)

HT16 - DA354A - OOP

Embed Size (px)

Citation preview

Page 1: HT16 - DA354A - OOP

PythonObjektorienterad programmering (och modellering)

Page 2: HT16 - DA354A - OOP

Dagens agenda• Vad är objektorienterad programmering?• Hur skiljer sig detta från funktionsdriven programmering? (det vi gjort hittills) • Hur ser detta ut i Python?• Lite snabba exempel!

Page 3: HT16 - DA354A - OOP

Vi vill modellera världen!Objektorienterad programmering och modellering

Page 4: HT16 - DA354A - OOP

Vad är objektorienterad programmering• En programmeringsparadigm, ett sätt hur man skriver & strukturerar kod.• Vi vill kunna efterlikna den ”verkliga världen” så mycket som möjligt, genom att göra

allt till objekt.• Detta för att förenkla förståelsen för hur koden är strukturer och hänger ihop

• Därför brukar man modellera sitt program innan man programmerar det.

Page 5: HT16 - DA354A - OOP

Procedural programming is a method of writing software. It is a programming practice centered on the

procedures or actions that take place in a program

Page 6: HT16 - DA354A - OOP
Page 7: HT16 - DA354A - OOP

Procedural programming is made up of one or more proceduresProcedures operate on data items that are separate from the procedure

Data items are passed from one procedure to another

Focus is on the creation of procedures that operate on the program’s data

Page 8: HT16 - DA354A - OOP

Object-oriented programming is centered on objects. Objects are created from abstract

data types that encapsulate data and function together.

Page 9: HT16 - DA354A - OOP

OOPAn object is a software entry that contains both data and procedures

Data contained in an object is known as the object’s data attributes

Procedures that an object performs are known as methods

Page 10: HT16 - DA354A - OOP
Page 11: HT16 - DA354A - OOP

A class is code that specifies data attributes and methods for a particular

type of data.

Page 12: HT16 - DA354A - OOP
Page 13: HT16 - DA354A - OOP
Page 14: HT16 - DA354A - OOP
Page 15: HT16 - DA354A - OOP

Att modellera en stadTänk er typ ”sim city”

Page 16: HT16 - DA354A - OOP
Page 17: HT16 - DA354A - OOP

Vad hittar vi för saker?• Människa• Attribut:• Namn• Ålder• Kön• Pengar• Metoder:• Gå• Shoppa• Prata• Åka taxi

• Byggnad• Attribut:• Gata• Nummer• Storlek• Våningar• Ålder• Metoder:• Bygga ut• Rasera• Renovera

• Taxibil• Attribut:• Förare• Aktiv• Passagerare• Plats• Metoder:• Hämta folk• Lämna folk• Byt chaufför• Byt passagerare

• Affärer• Attribut:• Namn • Typ av affär• Adress• Telefonnummer• Metoder:• Öppna• Stänga• Sälja• Inventera

Page 18: HT16 - DA354A - OOP

Låt oss fokusera på taxibilen…• Taxibil• Attribut:• Förare• Aktiv• Passagerare• Plats• Metoder:• Hämta folk• Lämna folk• Byt chaufför• Byt passagerare

Page 19: HT16 - DA354A - OOP

Vi har skapat datatypen:Taxi

Page 20: HT16 - DA354A - OOP

Vad är då en klass?• En klass är en beskrivning av hur ett objekt (t.ex. en taxi-bil, en affär, en människa)

ser ut. Alltså:• Vilka attribut som finns• Vilka metoder som finns• Man brukar rita upp detta i ett så kallat klassdiagram.

• Taxibil• Attribut:• Förare• Aktiv• Passagerare• Plats• Metoder:• Hämta folk• Lämna folk• Byt chaufför• Byt passagerare

Page 21: HT16 - DA354A - OOP

Hur skiljer sig detta från det vi gjort hittills?• Funktionsdriven programmering• Skapar ett steg-för-steg program (funktioner som kallar på varandra i en viss ordning)• Vi är väldigt öppna med vilken data som finns – och hur denna skickas runt i programmet

• Objektorienterad programmering• Fokuserar på att modellera världen på ett sätt som är enkelt att förstå för människan• Istället för att man skickar data mellan olika funktionen har varje objekt sina egna funktioner och

attribut – som ibland är hemliga, och objekten visar bara det som de vill visa.

Page 22: HT16 - DA354A - OOP

Vi kollar hur detta ser ut

Page 23: HT16 - DA354A - OOP