23
Lilian Blot Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Embed Size (px)

Citation preview

Page 1: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian BlotLilian Blot

TOWARDS MORE ADVANCED CONCEPTS&

OBJECT ORIENTED PROGRAMMING

Building Data Structure

Autumn 2014TPOP

1

Page 2: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Overview

Data representation

Building new data structures

Examples

Autumn 2014TPOP

2

Page 3: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Data Representation

Example: Address

house number street name city county postcode

Person Surname First name NI Address Phone numbers

Autumn 2014TPOP

3

Page 4: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Using what we know so far

Lists Address[house_number, street_name, city, county, postcode] Person[surname, first_name, NI, address, phone_numbers]

String Address“house_number, street_name, city, county, postcode” Person“surname, first_name, NI, address, phone_numbers”

Autumn 2014TPOP

4

Page 5: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Using what we know so far

Dictionary Address{house_number:15, street_name : ‘Lili Street’, city: ‘York’, county: ‘Yorkshire’, postcode: ‘YO5-5GH’}

Person{surname: ‘Blot’, first_name: ‘Lilian’, NI: ‘OO7’, address:…, phone_numbers: {…} }

Autumn 2014TPOP

5

Page 6: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

Keyword class General Form:

Example

Autumn 2014TPOP

6

class DataStructureName:``` doc-string ```pass

Code

class Address:``` doc-string ```pass

Code

Page 7: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

Using the new Data structure:

Autumn 2014TPOP

7

>>> addr = Address()>>> addr.street = ‘Lili Street’>>> print addr.streetLili Street

Code

Page 8: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

What are Classes?

Classes are composed from structural and behavioural constituents.

Attributes (member variables or instance variables) enable a class instance to maintain state.  a.k.a properties, fields, data members

Methods, enable the behaviour of class instances.

Classes define the type of their instances

Autumn 2014TPOP

8

Page 9: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

Keyword class Key method __init__(…)Key parameter self

isinstance(object ,Class)

Autumn 2014TPOP

9

class DataStructureName:``` doc-string ```def __init__(self, <parameters>):

<body>

Code

Page 10: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

Code examples:

First Attempt: Address

Autumn 2014TPOP

10

Page 11: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Address

Creating our Own Data Structure

Code examples:

First Attempt: Address

Autumn 2014TPOP

11

35

self

number

street

city

county

postcode

house_number

house_street

house_city

house_county

house_postcode

my_address

Page 12: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

Code examples:

First Attempt: Address

Second Attempt: Address

Autumn 2014TPOP

12

Page 13: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Address

Creating our Own Data Structure

Code examples:

First Attempt: Address

Second Attempt: Address

Autumn 2014TPOP

13

35

number

street

city

county

postcode

my_address

555

Page 14: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

The objects we define are

MUTABLE

Autumn 2014TPOP

14

Page 15: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Terminology

Class Address is the definition of an object

my_address is an instance of Address

number, city, postcode,… are attributes

__init__ is a constructor

__str__ is a method

Autumn 2014TPOP

15

Page 16: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Creating our Own Data Structure

Code examples:

First Attempt: Address

Second Attempt: Address

Person

Autumn 2014TPOP

16

Page 17: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

__repr__ Method

Definition: Return a string containing a printable representation of an object. This is the same value yielded by conversions (reverse quotes). It is sometimes useful to be able to access this operation as an ordinary function. For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(), otherwise the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object. A class can control what this function returns for its instances by defining a __repr__() method.

Autumn 2014TPOP

17

Page 18: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

__str__ Method

Definition :Return a string containing a nicely printable representation of an object. For strings, this returns the string itself. The difference with repr(object) is that str(object) does not always attempt to return a string that is acceptable to eval(); its goal is to return a printable string. If no argument is given, returns the empty string, ''.

Autumn 2014TPOP

18

Page 19: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

__str__ versus __repr__

Every class should implement the __repr__ method

__str__ is optional. If not implemented, __repr__ will be used instead

__repr__: representation of python object usually eval will convert it back to that object

__str__: is whatever you think is that object in text form

Autumn 2014TPOP

19

Page 20: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Summary

We have seen how to build our own data structure

Our data structure can be embedded into another data structure

User defined Objects are MUTABLE

Autumn 2014TPOP

20

Page 21: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Exercises

Client requirementsBuild a genealogy tree

First Name, Surname, Maiden name Date of Birth Place of Birth (city/town/village and country) Current Address

Your Job:Build an appropriate data structure

Autumn 2014TPOP

21

Page 22: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Nested Structures

Autumn 2014TPOP

22

Page 23: Lilian Blot TOWARDS MORE ADVANCED CONCEPTS & OBJECT ORIENTED PROGRAMMING Building Data Structure Autumn 2014 TPOP 1

Lilian Blot

Exercises

Food for thought

how to save/read the data structure into/from a text file

how to search for/find a person in the tree

how to add/remove a person from the tree

could you implement your solution?

Autumn 2014TPOP

23