OOP – Objekte Orienteeritud Programeerimine

Objekt

{
“name”: “ago” / “kati” -object
class – “id-code”:
“phone”:
}

Objekt kirjeldab ära konkreetse loogilise kogumi

  • näiteks õues olev punane auto on üks objekt
  • selle taga olev roheline auto on teine objekt jne

Tavaliselt mõtleme me arvust kui ühest väärtusest

Objekt koosneb tavaliselt mitmes väärtusest

  • värv,mark,pikkus,registrimaas jne

Klass

Klass kirjeldab ära struktuuri

  • näiteks autol on värv,pikkus jne

Klass (üldselt) ei sisalda andmeid

Klass on andmetüüp

Samatüüpi andmed pärinevad kõik ühest klassist

  • punane auto on auto, roheline auto on auto

Kuigi meil on maailmas mitu autot (objekti), siis meil on ü auto

OOP

On programeerimise paradigm, mis kasutab objekte

Python on objekte-orienteeritud programeerimiskeel

Pythonis kõik asjad on objektid

OOP tehnikad

Kapseldamine (encapsulation) – funktsionaalsus peidetakse

Modulaarsus (modularity) – programm jagatakse iseseisvateks tükkideks

Polümorfism (polymorphism) – alamklass saab meetodeid üle kirjutada
Milline alljärgnevatest lausetest kirjeldab polümorfismi kõige paremini?
Polümorfism võimaldab käsitleda erineva tüübi ja käitumisega objekte sama üldtüübina.
Mis on polümorfismi kasutamise peamine põhjus?
Programm on parema disainiga ning seda on lihtsam hallata ja uuendada.

Pärimine (inheritance) – alamklass pärib omadused ja meetodid

Sõne

Sõne on objekt

Kui loote uue sõne, siis luuakse uus objekt, mille tüüp on str

Sõne “funktsioone” kustutakse meetoditeks

  • ehk siis klassis kirjeldatud funktsioonid on meetodid

s = “Hello”
print(type(s)) # <class ‘str’>
print(id(s)) # 30773472
print(id(s.replace(“H”,”h”))) #61507648

Loome sõne s ja küsime selle tüübi. Tüüp on str klass

id tagastab objekti kohta arvu. Kuid on erinev, siis on ka objekt erinev (st mälus erinevas kohas)

replace teeb uue sõne, seda näeme ka id-ga

List

a=[1,2,3] a[123] – [1,2,3,4]
b=[1,2,3]
c=b b[233] – [,2,3]
a.append(4) c[233] – [,2,3]
b.pop(0)

c=[1,2] c=[43] – [1,2]
c=b[:]
c=list(b)

Klass kui andmetüüp

Iga klass on andmetüüp

Näiteks on Pythonis klass str

Iga konkreetne sõne, näiteks “tere”, on selle klassi objekt (ehk isend)

Ühekst klassist saab luua lõpmata palju objekte

Objekti kohta öeldakse ka isend ja instants

  • Üldselt mõeldakse “objekte”,”isend”,”instants” terminitega samu asju

Konstruktor

Objekti loomisel pannakse käima eriline meetod ehk konstruktor

Meetod kirjeldakse: __init__(self)

See meetod pannakse käima üks kord objekte loomisel

Eelnevas näites s = Student() kutsub välja konstruktori

Konstrunturi kirjeldamine ei ole kohustuslik