1 / 14

Object Oriented Programming Revisited

Explore OOP basics including classes, attributes, behaviors, and object instantiation using Python. Learn about constructors, destructors, and class attributes. Discover how to model an abstract game with players and conduct tournaments.

Download Presentation

Object Oriented Programming Revisited

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object Oriented Programming Revisited • Classes • Ideal for modeling real-world phenomena • Encapsulate data: Attributes • Encapsulate function: Behaviors • Act as blueprints • Objects are instantiated from classes

  2. An abstract game with two players • Player: • Name • Overall skill (5.0 – 10.0) • Motivation flux mf (0.0 – 1.0) • Current strength: • Current motivation cm : random number in [ -mf, mf ] • Current strength = skill + skill * cm With motivation 1.0, current strength is 2 * skill. With motivation 0.0, current strength is skill. Motivation flux 0.0: very stable player. Motivation flux 1.0: very unstable player.

  3. player.py • Object reference self first argument in all methods • self refers to the object on which the method is called • Object attribute self.skill vs. local variable skill

  4. No self argument in method calls! Python puts object reference in place of self >>> from player import Player >>> john = Player('John', 1.0, 8.0) >>> paul = Player('Paul') >>> print paul.skill 7.5 john paul name = ‘John’ skill = 8.0 motivation_flux = 1.0 name = ‘Paul’ skill = 7.5 motivation_flux = 0.0 class Player

  5. Summary • Class header • Keyword class begins definition, followed by name of class and colon (:) • Body of class • Indented block of code • Optional documentation string • Describes the class • Appears immediately after class header • Constructor method __init__ • Executes each time an object is created • Initialize attributes of class • Returns None • Object reference • All methods must at least specify this one parameter • Represents object of class on which a method is called • Called self by convention

  6. Remember the self. prefix when referencing object attributes >>> from player_wrong import Player >>> ringo = Player("Ringo") >>> print ringo.my_skill Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: Player instance has no attribute ‘my_skill'

  7. Let’s do something with our objects: method play player2.py >>> from player2 import Player >>> john = Player("John", 1.0, 8.0) >>> paul = Player("Paul") >>> john.play(paul) John (11.97) - Paul (7.50): John wins >>> john.play(paul) John (1.88) - Paul (7.50): Paul wins >>> paul.play(john) Paul (7.50) - John (3.32): Paul wins

  8. Destructors • Constructor named __init__ • Destructor • Method is named __del__ • Executed automatically when object is destroyed or when no more references to object exist • Can be used for housekeeping before Python reclaims object memory

  9. Class Attributes • Class Attributes • One copy of attribute shared by all objects of a class • Represents “class-wide” information • Property of the class, not of an object of the class • Initialized once in the class definition (not in constructor) • Otherwise it would be re-initialized every time an object is created • Accessed through the class name or any object of the class • May exist even if no objects of class exist

  10. Adding class attribute count + destructor player3.py >>> from player3 import Player >>> paul = Player('Paul') >>> ringo = Player('Ringo') >>> del paul Player Paul deleted

  11. Preparing to hold tournaments • New object attribute winsto keep track of match results • New play method which updates attribute wins player4.py

  12. Testing.. >>> from player4 import Player >>> john = Player('John', 0.2, 8.0) >>> paul = Player('Paul') >>> john.play(paul) John defeats Paul >>> john.play(paul) John defeats Paul >>> john.play(paul) John defeats Paul >>> john.play(paul) Paul defeats John >>> print john.wins 3 >>> print paul.wins 1 >>> ^D Player Paul deleted Player John deleted threonine:~/python% NB: destructor called automatically when session ends

  13. Now we’re ready to hold a tournament! player_game.py

  14. Holding tournament with four players threonine:~/python% python player_game.py Player name: John John's skill (5.0-10.0): 8 John's motivation flux (0.0-1.0): 0.2 Player name: Paul Paul's skill (5.0-10.0): 7.5 Paul's motivation flux (0.0-1.0): 0 Player name: George George's skill (5.0-10.0): 7.5 George's motivation flux (0.0-1.0): 0.5 Player name: Ringo Ringo's skill (5.0-10.0): 7.5 Ringo's motivation flux (0.0-1.0): 1.0 Paul defeats John John defeats George Ringo defeats John George defeats Paul Ringo defeats Paul Ringo defeats George Ringo is the winner with 3 wins! Player initialization Tournament matches

More Related