dennis komm programming and problem-solvingdennis komm programming and problem-solving...
TRANSCRIPT
![Page 1: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/1.jpg)
Dennis Komm
Programming and Problem-SolvingObject-Oriented Programming
Spring 2020 – May 07, 2020
![Page 2: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/2.jpg)
Classes and ObjectsPyhon Classes
![Page 3: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/3.jpg)
Classes – Technical
A class is an entity with a name that contains data and functionality
A class defines a new data type
Data: stored variables,called attributes
Functionality: consists of functions,called methods
Classes are (often) separate .py files with thesame name
Name
attribute1
attribute2
· · ·
method1
method2
· · ·
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 1 / 29
![Page 4: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/4.jpg)
Classes – Technical
A class is an entity with a name that contains data and functionality
A class defines a new data type
Data: stored variables,called attributes
Functionality: consists of functions,called methods
Classes are (often) separate .py files with thesame name
Name
attribute1
attribute2
· · ·
method1
method2
· · ·
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 1 / 29
![Page 5: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/5.jpg)
Classes – Technical
A class is an entity with a name that contains data and functionality
A class defines a new data type
Data: stored variables,called attributes
Functionality: consists of functions,called methods
Classes are (often) separate .py files with thesame name
Name
attribute1
attribute2
· · ·
method1
method2
· · ·
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 1 / 29
![Page 6: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/6.jpg)
Classes – Conceptual
Classes facilitate to bundle the data that belongs together contentwise
Classes provide functionality that allows to perform queries based on thedata or operations on the data
Example
Coherent measurements
Functions to read out data
Functions to modify data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 2 / 29
![Page 7: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/7.jpg)
Classes – Conceptual
Classes facilitate to bundle the data that belongs together contentwise
Classes provide functionality that allows to perform queries based on thedata or operations on the data
Example
Coherent measurements
Functions to read out data
Functions to modify data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 2 / 29
![Page 8: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/8.jpg)
Classes – Conceptual
Classes facilitate to bundle the data that belongs together contentwise
Classes provide functionality that allows to perform queries based on thedata or operations on the data
Example
Coherent measurements
Functions to read out data
Functions to modify data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 2 / 29
![Page 9: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/9.jpg)
Example – Earthquake Catalog
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 3 / 29
![Page 10: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/10.jpg)
Example – Earthquake Catalog
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 3 / 29
![Page 11: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/11.jpg)
Class for Measurement – First Try
Python Class Measurement
class Measurement:date = ""time = ""
latitude = 0longitude = 0
magnitude = 0
Name of the class / data type
Attributes according to CSV header
Measurement
date (Empty string λ)
time (Empty string λ)
latitude (Number 0)
longitude (Number 0)
magnitude (Number 0)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 4 / 29
![Page 12: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/12.jpg)
Class for Measurement – First Try
Python Class Measurement
class Measurement:date = ""time = ""
latitude = 0longitude = 0
magnitude = 0
Name of the class / data type
Attributes according to CSV header
Measurement
date (Empty string λ)
time (Empty string λ)
latitude (Number 0)
longitude (Number 0)
magnitude (Number 0)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 4 / 29
![Page 13: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/13.jpg)
Class for Measurement – First Try
Python Class Measurement
class Measurement:date = ""time = ""
latitude = 0longitude = 0
magnitude = 0
Name of the class / data type
Attributes according to CSV header
Measurement
date (Empty string λ)
time (Empty string λ)
latitude (Number 0)
longitude (Number 0)
magnitude (Number 0)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 4 / 29
![Page 14: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/14.jpg)
Class for Measurement – First Try
Python Class Measurement
class Measurement:date = ""time = ""
latitude = 0longitude = 0
magnitude = 0
Name of the class / data type
Attributes according to CSV header
Measurement
date (Empty string λ)
time (Empty string λ)
latitude (Number 0)
longitude (Number 0)
magnitude (Number 0)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 4 / 29
![Page 15: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/15.jpg)
Class for Measurement – First Try
Python Class Measurement
class Measurement:date = ""time = ""
latitude = 0longitude = 0
magnitude = 0
Name of the class / data type
Attributes according to CSV header
Measurement
date (Empty string λ)
time (Empty string λ)
latitude (Number 0)
longitude (Number 0)
magnitude (Number 0)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 4 / 29
![Page 16: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/16.jpg)
Classes and ObjectsPython Objects
![Page 17: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/17.jpg)
Objects – Instances of Classes
Classes describe the structure of objects, like a blueprintï Comparable with the header of the CSV file
Objects are instantiated according to the blueprint and will contain valuesï Comparable with the individual data rows in the CSV file
Example
Variables to store parameters of measurement
Function to display measurements lucidly
Function to compare measurements
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 5 / 29
![Page 18: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/18.jpg)
Objects – Instances of Classes
Classes describe the structure of objects, like a blueprintï Comparable with the header of the CSV file
Objects are instantiated according to the blueprint and will contain valuesï Comparable with the individual data rows in the CSV file
Example
Variables to store parameters of measurement
Function to display measurements lucidly
Function to compare measurements
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 5 / 29
![Page 19: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/19.jpg)
Objects – Instances of Classes
Classes describe the structure of objects, like a blueprintï Comparable with the header of the CSV file
Objects are instantiated according to the blueprint and will contain valuesï Comparable with the individual data rows in the CSV file
Example
Variables to store parameters of measurement
Function to display measurements lucidly
Function to compare measurements
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 5 / 29
![Page 20: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/20.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
date
λtime
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 21: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/21.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
λdate
λtime
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 22: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/22.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
λdate
λtime
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 23: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/23.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
λdate
λtime
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 24: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/24.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
2001/01/03date
λtime
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 25: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/25.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
2001/01/03date
λtime
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 26: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/26.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
2001/01/03date
11:11:20.4time
0latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"
w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 27: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/27.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
2001/01/03date
11:11:20.4time
46.446latitude
0longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446
w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 28: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/28.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
2001/01/03date
11:11:20.4time
46.446latitude
9.982longitude
0magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982
w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 29: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/29.jpg)
Object Instantiation
Objects are instances of classes
w = Measurement()
Instantiation of an object oftype “Measurement”
2001/01/03date
11:11:20.4time
46.446latitude
9.982longitude
2.36magnitude
Measurement w
w.date = "2001/01/03"
Dot notation; instance.attribute
w.time = "11:11:20.4"w.latitude = 46.446w.longitude = 9.982w.magnitude = 2.36
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 6 / 29
![Page 30: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/30.jpg)
Class for Measurement – Second Try
Measurement
date
time
latitude
longitude
magnitude
Coordinate
latitude
longitude
distance(self, other)
Method to use on objects oftype Coordinate
Better structuring
Latitude and longitude belong in theirown data type Coordinate
Object of type Measurement has anattribute of type Coordinate
“Composition”
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 7 / 29
![Page 31: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/31.jpg)
Class for Measurement – Second Try
Measurement
date
time
latitude
longitude
magnitude
Coordinate
latitude
longitude
distance(self, other)
Method to use on objects oftype Coordinate
Better structuring
Latitude and longitude belong in theirown data type Coordinate
Object of type Measurement has anattribute of type Coordinate
“Composition”
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 7 / 29
![Page 32: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/32.jpg)
Class for Measurement – Second Try
Measurement
date
time
coordinate
magnitude
Coordinate
latitude
longitude
distance(self, other)
Method to use on objects oftype Coordinate
Better structuring
Latitude and longitude belong in theirown data type Coordinate
Object of type Measurement has anattribute of type Coordinate
“Composition”
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 7 / 29
![Page 33: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/33.jpg)
Class for Measurement – Second Try
Measurement
date
time
coordinate
magnitude
Coordinate
latitude
longitude
distance(self, other)
Method to use on objects oftype Coordinate
Better structuring
Latitude and longitude belong in theirown data type Coordinate
Object of type Measurement has anattribute of type Coordinate
“Composition”
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 7 / 29
![Page 34: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/34.jpg)
Methods
Methods are function that are defined within a class
The first parameter is always self, which allows to refer to the currentinstance
Again dot notation; Call analogously to append() for lists
Pre-defined functions with special functionality
Function __str__ defines what happens when instance is given to print()
class Coordinate:def __str__(self):
return "Dies ist eine Koordinate"
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 8 / 29
![Page 35: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/35.jpg)
Methods
Methods are function that are defined within a class
The first parameter is always self, which allows to refer to the currentinstance
Again dot notation; Call analogously to append() for lists
Pre-defined functions with special functionality
Function __str__ defines what happens when instance is given to print()
class Coordinate:def __str__(self):
return "Dies ist eine Koordinate"
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 8 / 29
![Page 36: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/36.jpg)
Methods
Methods are function that are defined within a class
The first parameter is always self, which allows to refer to the currentinstance
Again dot notation; Call analogously to append() for lists
Pre-defined functions with special functionality
Function __str__ defines what happens when instance is given to print()
class Coordinate:def __str__(self):
return "Dies ist eine Koordinate"
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 8 / 29
![Page 37: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/37.jpg)
Methods
Methods are function that are defined within a class
The first parameter is always self, which allows to refer to the currentinstance
Again dot notation; Call analogously to append() for lists
Pre-defined functions with special functionality
Function __str__ defines what happens when instance is given to print()
class Coordinate:def __str__(self):
return "Dies ist eine Koordinate"
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 8 / 29
![Page 38: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/38.jpg)
Methods
Methods are function that are defined within a class
The first parameter is always self, which allows to refer to the currentinstance
Again dot notation; Call analogously to append() for lists
Pre-defined functions with special functionality
Function __str__ defines what happens when instance is given to print()
class Coordinate:def __str__(self):
return "Dies ist eine Koordinate"
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 8 / 29
![Page 39: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/39.jpg)
Methods in Classes
from math import *
class Coordinate:
latitude = 0longitude = 0
def __str__(self):return "Dies ist eine Koordinate"
# Computes the distance to the provided coordinate ’other’ in kilometersdef distance(self, other):
dlat = self.latitude - other.latitude
dlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
First parameter is always selfEnables to access the current object fromwithin a method of that classHaversine formula
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 9 / 29
![Page 40: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/40.jpg)
Methods in Classes
from math import *
class Coordinate:
latitude = 0longitude = 0
def __str__(self):return "Dies ist eine Koordinate"
# Computes the distance to the provided coordinate ’other’ in kilometersdef distance(self, other):
dlat = self.latitude - other.latitude
dlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
First parameter is always self
Enables to access the current object fromwithin a method of that classHaversine formula
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 9 / 29
![Page 41: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/41.jpg)
Methods in Classes
from math import *
class Coordinate:
latitude = 0longitude = 0
def __str__(self):return "Dies ist eine Koordinate"
# Computes the distance to the provided coordinate ’other’ in kilometersdef distance(self, other):
dlat = self.latitude - other.latitude
dlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
First parameter is always self
Enables to access the current object fromwithin a method of that class
Haversine formula
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 9 / 29
![Page 42: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/42.jpg)
Methods in Classes
from math import *
class Coordinate:
latitude = 0longitude = 0
def __str__(self):return "Dies ist eine Koordinate"
# Computes the distance to the provided coordinate ’other’ in kilometersdef distance(self, other):
dlat = self.latitude - other.latitude
dlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
First parameter is always selfEnables to access the current object fromwithin a method of that class
Haversine formula
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 9 / 29
![Page 43: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/43.jpg)
Classes and ObjectsConstructors
![Page 44: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/44.jpg)
Constructors
Creating a Coordinate needs three steps
k = Coordinate()k.latitude = 45.97k.longitude = 7.65
Constructors facilitate to easily set the initial values of a newly createdobject
k = Coordinate(45.97, 7.65)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 10 / 29
![Page 45: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/45.jpg)
Constructors
Creating a Coordinate needs three steps
k = Coordinate()k.latitude = 45.97k.longitude = 7.65
Constructors facilitate to easily set the initial values of a newly createdobject
k = Coordinate(45.97, 7.65)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 10 / 29
![Page 46: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/46.jpg)
Constructors
Creating a Coordinate needs three steps
k = Coordinate()k.latitude = 45.97k.longitude = 7.65
Constructors facilitate to easily set the initial values of a newly createdobject
k = Coordinate(45.97, 7.65)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 10 / 29
![Page 47: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/47.jpg)
Constructors
from math import *
class Coordinate:
def __init__(self, deg_latitude, deg_longitude):self.latitude = radians(deg_latitude) # Conversion from degree measureself.longitude = radians(deg_longitude) # to radians measure
def distance(self, other):dlat = self.latitude - other.latitudedlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
zurich = Coordinate(47.36667, 8.55)brisbane = Coordinate(-27.46794, 153.02809)print(int(zurich.distance(brisbane)))
Is executed when object is initialized;parameter values are passed
to this function
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 11 / 29
![Page 48: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/48.jpg)
Constructors
from math import *
class Coordinate:
def __init__(self, deg_latitude, deg_longitude):self.latitude = radians(deg_latitude) # Conversion from degree measureself.longitude = radians(deg_longitude) # to radians measure
def distance(self, other):dlat = self.latitude - other.latitudedlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
zurich = Coordinate(47.36667, 8.55)brisbane = Coordinate(-27.46794, 153.02809)print(int(zurich.distance(brisbane)))
Is executed when object is initialized;parameter values are passed
to this function
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 11 / 29
![Page 49: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/49.jpg)
Constructors
from math import *
class Coordinate:
def __init__(self, deg_latitude, deg_longitude):self.latitude = radians(deg_latitude) # Conversion from degree measureself.longitude = radians(deg_longitude) # to radians measure
def distance(self, other):dlat = self.latitude - other.latitudedlon = self.longitude - other.longitudeHav = sin(dlat / 2)**2 + cos(self.latitude) * cos(other.latitude) * sin(dlon / 2)**2return 6373 * 2 * atan2(sqrt(Hav), sqrt(1 - Hav))
zurich = Coordinate(47.36667, 8.55)brisbane = Coordinate(-27.46794, 153.02809)print(int(zurich.distance(brisbane)))
Is executed when object is initialized;parameter values are passed
to this function
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 11 / 29
![Page 50: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/50.jpg)
Managing an Earthquake Database
![Page 51: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/51.jpg)
Managing an Earthquake Database
1. Implement data structure to represent earthquakes
2. Read in CSV file, create objects from the lines, insert them into a dictionary
3. Implement user interface to query data
30274940.00000; 2001/01/20 15:49:10; certain; earthquake; 45.856; 8.142; ”SED (ECOS-09)”; 13.; 2.56; 2.6;
Of interest are
Index 0: Keys for dictionary; is converted to natural number
Index 1: Date and time; is split at space
Index 4: Longitude; is converted to floating-point number
Index 5: Latitude; is converted to floating-point number
Index 9: Magnitude on Richter scale; is converted to floating-point number
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 12 / 29
![Page 52: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/52.jpg)
Managing an Earthquake Database
1. Implement data structure to represent earthquakes
2. Read in CSV file, create objects from the lines, insert them into a dictionary
3. Implement user interface to query data
30274940.00000; 2001/01/20 15:49:10; certain; earthquake; 45.856; 8.142; ”SED (ECOS-09)”; 13.; 2.56; 2.6;
Of interest are
Index 0: Keys for dictionary; is converted to natural number
Index 1: Date and time; is split at space
Index 4: Longitude; is converted to floating-point number
Index 5: Latitude; is converted to floating-point number
Index 9: Magnitude on Richter scale; is converted to floating-point number
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 12 / 29
![Page 53: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/53.jpg)
Managing an Earthquake Database
1. Implement data structure to represent earthquakes
2. Read in CSV file, create objects from the lines, insert them into a dictionary
3. Implement user interface to query data
30274940.00000; 2001/01/20 15:49:10; certain; earthquake; 45.856; 8.142; ”SED (ECOS-09)”; 13.; 2.56; 2.6;
Of interest are
Index 0: Keys for dictionary; is converted to natural number
Index 1: Date and time; is split at space
Index 4: Longitude; is converted to floating-point number
Index 5: Latitude; is converted to floating-point number
Index 9: Magnitude on Richter scale; is converted to floating-point numberProgramming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 12 / 29
![Page 54: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/54.jpg)
Managing an Earthquake Database
1. Implement data structure to represent earthquakes
class Coordinate:def __init__(self, deg_latitude, deg_longitude):
self.latitude = radians(deg_latitude)self.longitude = radians(deg_longitude)
def __str__(self):return str(self.latitude) + ", " + str(self.latitude)
class Measurement:def __init__(self, date, time, magnitude, coordinate):
self.date = dateself.time = timeself.magnitude = magnitudeself.coordinate = coordinate
def __str__(self):return "Erdbeben der Stärke " + str(self.magnitude) + ", gemessen am " \
+ str(self.date) + " um " + str(self.time) + " an Position " + str(self.coordinate)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 13 / 29
![Page 55: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/55.jpg)
Managing an Earthquake Database
1. Implement data structure to represent earthquakesclass Coordinate:
def __init__(self, deg_latitude, deg_longitude):self.latitude = radians(deg_latitude)self.longitude = radians(deg_longitude)
def __str__(self):return str(self.latitude) + ", " + str(self.latitude)
class Measurement:def __init__(self, date, time, magnitude, coordinate):
self.date = dateself.time = timeself.magnitude = magnitudeself.coordinate = coordinate
def __str__(self):return "Erdbeben der Stärke " + str(self.magnitude) + ", gemessen am " \
+ str(self.date) + " um " + str(self.time) + " an Position " + str(self.coordinate)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 13 / 29
![Page 56: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/56.jpg)
Managing an Earthquake Database
2. Read in CSV, create objects from the lines, insert them into a dictionary
def read_measurements(filename):
# Datei Zeile für Zeile einlesenwith open(filename) as file:
lines = file.read().splitlines()measurements = {}
# Alle Zeilen nacheinander verarbeitenfor i in range(1, len(lines)):
tmp = lines[i].split(";")tmp_coord = Coordinate(float(tmp[4]), float(tmp[5]))tmp_date_time = tmp[1].split(" ")tmp_magnitude = float(tmp[9])tmp_meas = Measurement(tmp_date_time[1], tmp_date_time[2], tmp_magnitude, tmp_coord)measurements[int(float(tmp[0]))] = tmp_meas
return measurements
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 14 / 29
![Page 57: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/57.jpg)
Managing an Earthquake Database
2. Read in CSV, create objects from the lines, insert them into a dictionarydef read_measurements(filename):
# Datei Zeile für Zeile einlesenwith open(filename) as file:
lines = file.read().splitlines()measurements = {}
# Alle Zeilen nacheinander verarbeitenfor i in range(1, len(lines)):
tmp = lines[i].split(";")tmp_coord = Coordinate(float(tmp[4]), float(tmp[5]))tmp_date_time = tmp[1].split(" ")tmp_magnitude = float(tmp[9])tmp_meas = Measurement(tmp_date_time[1], tmp_date_time[2], tmp_magnitude, tmp_coord)measurements[int(float(tmp[0]))] = tmp_meas
return measurements
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 14 / 29
![Page 58: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/58.jpg)
Managing an Earthquake Database
3. Implement user interface to query data
earthquakes = read_measurements("earthquakes.csv")
while True:user_input = input("Geben Sie eine Erdbeben-ID ein (Abbrechen mit exit): ")if user_input == "exit":
print("Programm beendet.")break
else:quake_id = int(user_input)if quake_id not in earthquakes:
print("Erdbeben-ID nicht gefunden.")else:
print(earthquakes[quake_id])
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 15 / 29
![Page 59: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/59.jpg)
Managing an Earthquake Database
3. Implement user interface to query data
earthquakes = read_measurements("earthquakes.csv")
while True:user_input = input("Geben Sie eine Erdbeben-ID ein (Abbrechen mit exit): ")if user_input == "exit":
print("Programm beendet.")break
else:quake_id = int(user_input)if quake_id not in earthquakes:
print("Erdbeben-ID nicht gefunden.")else:
print(earthquakes[quake_id])
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 15 / 29
![Page 60: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/60.jpg)
Managing a Student Database
![Page 61: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/61.jpg)
Exercise – Managing a Student Database
Write a class the represents students withattributes
student_id
name
grade
Enable the user to create student objectsusing input()
Save them into a dictionary
Output every student using a for ... inloop
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 16 / 29
![Page 62: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/62.jpg)
Exercise – Managing a Student Database
class Student:
def __init__(self, s_id, name, grade):self.s_id = s_idself.name = nameself.grade = grade
def __str__(self):return "Die / Der Studierende "
+ str(self.name)+ " (" + str(self.s_id)+ ") hat die Note "+ str(self.grade)+ " erhalten."
students = {}
while True:user_input = input("Weitere Daten eingeben? [J/N]")if user_input == "J":
tmp_id = int(input(" ID: "))tmp_name = input(" Name: ")tmp_grade = float(input(" Note: "))tmp_student = Student(tmp_id, tmp_name, tmp_grade)students[tmp_id] = tmp_student
elif user_input == "N":print("Programm beendet.")break
else:print("Ungültige Eingabe.")
for id in students:print(students[id])
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 17 / 29
![Page 63: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/63.jpg)
Heaps
![Page 64: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/64.jpg)
Lists and Dictonaries
Complexity on lists and dictionaries with n elements
Lists
Access with [] O(1)Insertion with append() O(1)Insertion with insert() O(n)
Removal with pop(0) O(1)Removal with pop() O(1)
Find minimum O(n)
Dictionaries
Access with [] O(1)Insertion with [] O(1)
Find minimum O(n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 18 / 29
![Page 65: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/65.jpg)
Heaps
Design data structure for special usageï Minimum can be computed efficiently (Using lists and dictionaries O(n))
Data structure withthe following operations
Insertion
O(log n)
Get minimum
O(1)
Pop minimum
O(log n)
Use a “tree”
Embed this tree into list
Root (first element of list) containssmallest element
After removing an element, treeneeds to be rearranged
When inserting element, tree needsto be rearranged as well
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 19 / 29
![Page 66: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/66.jpg)
Heaps
Design data structure for special usageï Minimum can be computed efficiently (Using lists and dictionaries O(n))
Data structure withthe following operations
Insertion O(log n)Get minimum O(1)Pop minimum O(log n)
Use a “tree”
Embed this tree into list
Root (first element of list) containssmallest element
After removing an element, treeneeds to be rearranged
When inserting element, tree needsto be rearranged as well
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 19 / 29
![Page 67: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/67.jpg)
Heaps
Design data structure for special usageï Minimum can be computed efficiently (Using lists and dictionaries O(n))
Data structure withthe following operations
Insertion O(log n)Get minimum O(1)Pop minimum O(log n)
Use a “tree”
Embed this tree into list
Root (first element of list) containssmallest element
After removing an element, treeneeds to be rearranged
When inserting element, tree needsto be rearranged as well
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 19 / 29
![Page 68: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/68.jpg)
Heaps
1
2 4
17 9 25 36
42 100
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 69: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/69.jpg)
Heaps
1
2 4
17 9 25 36
42 100 � 2 is parent of 17 and 9
� 17 is left child of 2� 9 is right child of 2
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 70: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/70.jpg)
Heaps
1
2 4
17 9 25 36
42 100 Children always have largervalues than their parents
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 71: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/71.jpg)
Heaps
1
2 4
17 9 25 36
42 100Enumerate nodes of the tree from
left to right, level by level,and write values into a list in that order
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 72: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/72.jpg)
Heaps
1
2 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 73: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/73.jpg)
Heaps
1
2 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 74: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/74.jpg)
Heaps
1
22 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
� The left child of index 0 has index 1� The right child of index 0 has index 2
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 75: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/75.jpg)
Heaps
1
2 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
� The left child of index 1 has index 3� The right child of index 1 has index 4
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 76: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/76.jpg)
Heaps
1
2 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
� The left child of index 2 has index 5� The right child of index 2 has index 6
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 77: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/77.jpg)
Heaps
1
2 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
� The left child of index 3 has index 7� The right child of index 3 has index 8
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 78: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/78.jpg)
Heaps
1
2 4
17 9 25 36
42 100 1 2 4 17 9 25 36 42 100
� The left child of index i has index 2i+ 1� The right child of index i has index 2i+ 2
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 20 / 29
![Page 79: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/79.jpg)
Heaps
Create class Heap with functions
add(self, x) Insert element in O(log n)getmin(self) Output element in O(1)popmin(self) Remove minimum in O(log n)
class Heap:...def add(self, x):
...def getmin(self):
...def popmin(self):
...
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 21 / 29
![Page 80: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/80.jpg)
Heaps
Create class Heap with functions
add(self, x) Insert element in O(log n)getmin(self) Output element in O(1)popmin(self) Remove minimum in O(log n)
class Heap:...def add(self, x):
...def getmin(self):
...def popmin(self):
...
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 21 / 29
![Page 81: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/81.jpg)
Heaps – Initialization
Constructor creates listdef __init__(self):
self.data = []
Create helper functions; the underscore at the beginning indicates that theyare for “internal use” only
def _swap(self, i, j):self.data[i], self.data[j] = self.data[j], self.data[i]
def _parent(self, i):return (i-1) // 2
def _left_child(self, i):return 2 * i + 1
def _right_child(self, i):return 2 * i + 2
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 22 / 29
![Page 82: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/82.jpg)
Heaps – Initialization
Constructor creates listdef __init__(self):
self.data = []
Create helper functions; the underscore at the beginning indicates that theyare for “internal use” only
def _swap(self, i, j):self.data[i], self.data[j] = self.data[j], self.data[i]
def _parent(self, i):return (i-1) // 2
def _left_child(self, i):return 2 * i + 1
def _right_child(self, i):return 2 * i + 2
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 22 / 29
![Page 83: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/83.jpg)
Heaps – Insert Element
add(self, x) – Insert element x
Append x at the end
Now consider last position of heap
If this element is smaller than its parent, swap them
Now consider position of parent and repeat
getmin(self) – Return smallest element
Return the first element of list data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 23 / 29
![Page 84: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/84.jpg)
Heaps – Insert Element
add(self, x) – Insert element x
Append x at the end
Now consider last position of heap
If this element is smaller than its parent, swap them
Now consider position of parent and repeat
getmin(self) – Return smallest element
Return the first element of list data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 23 / 29
![Page 85: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/85.jpg)
Heaps – Insert Element
add(self, x) – Insert element x
Append x at the end
Now consider last position of heap
If this element is smaller than its parent, swap them
Now consider position of parent and repeat
getmin(self) – Return smallest element
Return the first element of list data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 23 / 29
![Page 86: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/86.jpg)
Heaps – Insert Element
add(self, x) – Insert element x
Append x at the end
Now consider last position of heap
If this element is smaller than its parent, swap them
Now consider position of parent and repeat
getmin(self) – Return smallest element
Return the first element of list data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 23 / 29
![Page 87: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/87.jpg)
Heaps – Insert Element
def add(self, x):self.data.append(x)a = len(self.data) - 1while a > 0 and self.data[a] < self.data[self._parent(a)]:
self._swap(a, self._parent(a))a = self._parent(a)
def getmin(self):return self.data[0]
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 24 / 29
![Page 88: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/88.jpg)
Heaps – Insert Element
def add(self, x):self.data.append(x)a = len(self.data) - 1while a > 0 and self.data[a] < self.data[self._parent(a)]:
self._swap(a, self._parent(a))a = self._parent(a)
def getmin(self):return self.data[0]
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 24 / 29
![Page 89: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/89.jpg)
Heaps – Remove Minimum
pop_min(self) – Remove smallest element
The element is located at the root, that is, the first position of the heap
We cannot simply remove it and leave the remainder
Overwrite first element with last element and remove the latter usingdata.pop()
Now there is a wrong element located at the root
Reorder tree from top to bottom
To this end, swap root with larger child
Now look at position of child and repeat
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 25 / 29
![Page 90: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/90.jpg)
Heaps – Remove Minimum
pop_min(self) – Remove smallest element
The element is located at the root, that is, the first position of the heap
We cannot simply remove it and leave the remainder
Overwrite first element with last element and remove the latter usingdata.pop()
Now there is a wrong element located at the root
Reorder tree from top to bottom
To this end, swap root with larger child
Now look at position of child and repeat
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 25 / 29
![Page 91: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/91.jpg)
Heaps – Remove Minimum
pop_min(self) – Remove smallest element
The element is located at the root, that is, the first position of the heap
We cannot simply remove it and leave the remainder
Overwrite first element with last element and remove the latter usingdata.pop()
Now there is a wrong element located at the root
Reorder tree from top to bottom
To this end, swap root with larger child
Now look at position of child and repeatProgramming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 25 / 29
![Page 92: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/92.jpg)
Heaps – Remove Minimum
def popmin(self):self.data[0] = self.data[-1]self.data.pop()a = 0while True:
m = aif self._left_child(a) < len(self.data) and \
self.data[self._left_child(a)] < self.data[m]:m = self._left_child(a)
if self._right_child(a) < len(self.data) and \self.data[self._right_child(a)] < self.data[m]:m = self._right_child(a)
if m > a:self._swap(a, m)a = m
else:return
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 26 / 29
![Page 93: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/93.jpg)
HeapsortSorting with Heaps
![Page 94: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/94.jpg)
Heaps – Complexity
Suppose there are n elements in the heap
Then the heap has roughly height log n
add() only considers one node per level
pop_min() considers only two nodes per level
Both functions have a complexity in O(log n)
With this, n elements can be inserted in O(n log n)Then, the respective minimum can be extracted n times in O(n log n)
Heapsort: With this strategy we can sort in O(n log n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 27 / 29
![Page 95: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/95.jpg)
Heaps – Complexity
Suppose there are n elements in the heap
Then the heap has roughly height log nadd() only considers one node per level
pop_min() considers only two nodes per level
Both functions have a complexity in O(log n)
With this, n elements can be inserted in O(n log n)Then, the respective minimum can be extracted n times in O(n log n)
Heapsort: With this strategy we can sort in O(n log n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 27 / 29
![Page 96: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/96.jpg)
Heaps – Complexity
Suppose there are n elements in the heap
Then the heap has roughly height log nadd() only considers one node per level
pop_min() considers only two nodes per level
Both functions have a complexity in O(log n)
With this, n elements can be inserted in O(n log n)Then, the respective minimum can be extracted n times in O(n log n)
Heapsort: With this strategy we can sort in O(n log n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 27 / 29
![Page 97: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/97.jpg)
Heaps – Complexity
Suppose there are n elements in the heap
Then the heap has roughly height log nadd() only considers one node per level
pop_min() considers only two nodes per level
Both functions have a complexity in O(log n)
With this, n elements can be inserted in O(n log n)Then, the respective minimum can be extracted n times in O(n log n)
Heapsort: With this strategy we can sort in O(n log n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 27 / 29
![Page 98: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/98.jpg)
Heaps – Complexity
Suppose there are n elements in the heap
Then the heap has roughly height log nadd() only considers one node per level
pop_min() considers only two nodes per level
Both functions have a complexity in O(log n)
With this, n elements can be inserted in O(n log n)Then, the respective minimum can be extracted n times in O(n log n)
Heapsort: With this strategy we can sort in O(n log n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 27 / 29
![Page 99: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/99.jpg)
Heaps – Complexity
Suppose there are n elements in the heap
Then the heap has roughly height log nadd() only considers one node per level
pop_min() considers only two nodes per level
Both functions have a complexity in O(log n)
With this, n elements can be inserted in O(n log n)Then, the respective minimum can be extracted n times in O(n log n)Heapsort: With this strategy we can sort in O(n log n)
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 27 / 29
![Page 100: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/100.jpg)
Exercise – Heapsort
Implement Heapsort
as a Python function
using a heap
to which all elements are first added
and then popped
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 28 / 29
![Page 101: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/101.jpg)
Heapsort
def heapsort(data):tmp = Heap()sorted_data = []for element in data:
tmp.add(element)for i in range(len(data)):
sorted_data.append(tmp.getmin())tmp.popmin()
return sorted_data
Programming and Problem-Solving – Object-Oriented Programming Spring 2020 Dennis Komm 29 / 29
![Page 102: Dennis Komm Programming and Problem-SolvingDennis Komm Programming and Problem-Solving Object-Oriented Programming Spring 2020 – May 07, 2020 Classes and Objects Pyhon Classes Classes](https://reader034.vdocuments.mx/reader034/viewer/2022042613/5faa66b9d7a203185b661896/html5/thumbnails/102.jpg)
Thanks for your attention