Changes between Version 92 and Version 93 of python


Ignore:
Timestamp:
Oct 26, 2015, 12:21:13 PM (5 years ago)
Author:
mprotic
Comment:

Dodatek poglavja "Razredi"

Legend:

Unmodified
Added
Removed
Modified
  • python

    v92 v93  
    664664}}}
    665665
     666
     667== RAZREDI IN UVOD V OBJEKTNO PROGRAMIRANJE ==
     668
     669Razredi so temeljni gradniki v Pythonu. Podobno, kot z besedno zvezo "def" definiramo funkcijo, z besedno zvezo "class" definiramo razred. [[BR]]
     670Torej kaj sploh je razred ? Razred je, preprosto povedano, logično združevanje podatkov, ter funkcij (slednje, ko so definirane v razredih, pogosto imenujemo tudi "metode"). V takem primeru z "logičnim združevanjem" mislimo predvsem na to, da v praksi, ko delamo z razredi, poskušamo v razrede združevati le tiste podatke in le tiste funkcije, kjer obstaja neka logična povezava med njimi (recimo, imamo razred Strojni_element, v katerem združujemo podatke o materialu, geometriji..., ter razne funkcije, recimo za preračun trdnosti itd. V ta isti razred pa ne bi vnesli podatkov o našem počutju, vremenu, ipd.). Teoretično namreč, v razrede lahko vnašamo bilo katere funkcije in kakršne koli podatke, vendar potem vse skupaj ne bi več imelo nekega smisla. Z razredi si poskušamo programiranje olajšati in ne otežiti. Poleg tega, velikokrat razredi temeljijo na objektih iz realnega sveta (recimo "Kupec", "Produkt", "Avto" ...). [[BR]]
     671
     672Kljub vsemu povedanem so razredi tehnika modeliranja oz. način, kako mislimo o programih. Torej, ko programiramo na tak način, to je z razredi in objekti, rečemo, da izvajamo "objektno orientirano programiranje".
     673
     674=== First-class Everything ===
     675
     676Guido van Rossum (človek, ki je zasnoval Python) je Python udejanil po načelu "fist-class everyting", kar v bistvu pomeni da vse objekte, katere je v jeziku mogoče poimenovati imeli enak status (npr. integerji, nizi, slovarji, razredi...). Torej, to pomeni, da se vse v Pythonu obravnava enako, torej, vse je razred.
     677
     678{{{
     679#!python
     680# -*- coding: utf-8 -*-
     681
     682x = 5
     683print(type(x))
     684
     685y = 5.45
     686print(type(y))
     687
     688def f(x):
     689    return x+1
     690print(type(f))
     691
     692import math
     693print(type(math))
     694}}}
     695
     696Iz primera ugotovimo, da so tako funkcije, kot tudi tipi spremenljivk v bistvu zapisani v razredu oz. so del nekega razreda.
     697
     698=== Razredi so "načrti" za izdelavo objektov iz razreda ===
     699
     700Objekt združuje spremenljivke in funkcije v eno. Objekti dobijo svoje spremenljivke in funkcije iz razredov. Torej iz tega sledi, da so razredi v bistvu neke predloge oz. načrti za izgradnjo naših objektov, medtem, ko objekte, si lahko zamišljamo kot podatkovno strukturo, ki vsebuje tako podatke, kot tudi funkcije.
     701
     702{{{
     703#!python
     704# -*- coding: utf-8 -*-
     705
     706class Moj_Razred:
     707    x = 5
     708
     709    def foo(self):   # Parameter "self" bomo obrazložili kasneje
     710        print("Pozdrav iz funkcije foo")
     711
     712moj_objekt = Moj_Razred()  # Spremenljivka "moj_objekt" vsebuje/drži objekt razreda "Moj_Razred, katere vsebuje spremenljivke, ter "foo" funkcijo
     713}}}
    666714
    667715== Delo z datotekami ==