Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
383 lines (272 sloc) 8.89 KB

OOP Basic

Object Paradigm

  • Model world as objects that interacts with each other
.. glossary::

    class
        Templates for objects.

    objects
        Instances of a class.

    method
        Function inside the class.

    property
    attribute
    field
        Variable inside the class.
        Also known as "Properties" or "Attributes"


Classes

  • Capitalized CamelCase name convention
  • Classes are templates for objects

Classes vs Instances

  • Instances are also known as Objects
  • Two newlines between class and code
  • snake_case names
img/blueprint.png

Intuition definition: Class is a blueprint, instances are homes made from this plan. Image source: :cite:`FigureBlueprintHouse`

Fields

  • Fields are also known as "Properties" or "Attributes"
  • snake_case name convention
  • Fields are defined in __init__() method
  • Fields store information for instances

Initializer Method

  • __init__() is not a constructor!
  • It's a first method run after object is initiated
  • All classes has default __init__()
  • Initialize all fields only in __init__

Methods

  • Methods are functions in the class
  • First argument is always instance (self)
  • While calling function you never pass self

Simple Methods

Methods accessing fields

Methods with argument

Methods with arguments with default value

Methods calling other methods

One class per file?

  • Osobne pliki - gdy klasy są duże
  • Jeden plik - gdy klasy są małe i czytelne

Assignments

Defining Classes

  • Filename: oop_iris.py
  • Lines of code to write: 15 lines
  • Estimated time of completion: 10 min
  1. Stwórz klasę Iris z polami:

    • sepal_length: float,
    • sepal_width: float,
    • petal_length: float,
    • petal_width: float,
    • species: str.
  2. Napisz metodę total() wyliczającą sumę dla pól numerycznych

  3. Napisz metodę average() wyliczającą średnią dla pól numerycznych

  4. Stwórz obiekt setosa z pomiarami:

    • sepal_length: 5.4
    • sepal_width: 3.9
    • petal_length: 1.3
    • petal_width: 0.4
  5. Wyświetl na ekranie nazwę gatunku oraz sumę i średnią z pomiarów.

Dragon (Part 1)

  • Filename: oop_dragon_1.py
  • Lines of code to write: 100 lines
  • Estimated time of completion: 75 min
  • Warning: Don't delete code, assignment will be continued
img/dragon.gif

Firkraag dragon from game Baldur's Gate II: Shadows of Amn

  1. Nie musisz trzymać się kolejności punktów i podpunktów w zadaniu

  2. Jeżeli konieczne jest wprowadzenie nowej metody, klasy lub pól to należy to zrobić

  3. Smok ma mieć:

    • nazwę
    • pozycję x na ekranie
    • pozycję y na ekranie
    • nazwę pliku tekstury, domyślnie img/dragon/alive.png
    • punkty życia, domyślnie losowy int z zakresu od 50 do 100
  4. Smok może:

    • być ustawiony w dowolne miejsce ekranu
    • zadawać komuś losowe obrażenia z przedziału od 5 do 20
    • otrzymywać obrażenia
    • być przesuwany o zadaną liczbę punktów w którymś z kierunków
  5. Przyjmij górny lewy róg ekranu za punkt (x=0, y=0)

    • idąc w prawo dodajesz x
    • idąc w lewo odejmujesz x
    • idąc w górę odejmujesz y
    • idąc w dół dodajesz y
  6. Przy każdym obrażeniu wypisz na ekranie nazwę smoka, ilość obrażeń i pozostałe punkty życia

  7. Nie można zadawać smokowi obrażeń, jeżeli już nie żyje

  8. Kiedy punkty życia smoka spadną do, lub poniżej zera:

    • ustaw status obiektu na dead
    • na ekranie ma pojawić się napis XXX is dead gdzie XXX to nazwa smoka
    • zmień nazwę pliku tekstury na img/dragon/dead.png
    • na ekranie pojawi się informacja ile złota smok wyrzucił (losowa 1-100)
    • na ekranie pojawi się informacja o pozycji gdzie smok zginął
  9. Przeprowadź grę:

    • Stwórz smoka w pozycji x=50, y=120 i nazwij go Wawelski
    • Ustaw nową pozycję na x=10, y=20
    • Przesuń smoka o 10 w lewo i 20 w dół
    • Przesuń smoka o 10 w lewo i 15 w prawo
    • Przesuń smoka o 15 w prawo i 5 w górę
    • Przesuń smoka o 5 w dół
    • Zadaj 10 obrażeń smokowi
    • Zadaj 5 obrażeń smokowi
    • Zadaj 3 obrażeń smokowi
    • Zadaj 2 obrażeń smokowi
    • Zadaj 15 obrażeń smokowi
    • Zadaj 25 obrażeń smokowi
    • Zadaj 75 obrażeń smokowi
You can’t perform that action at this time.