U ovim vremenima iluzija i obmana koje generiraju kompanije za vještačku inteligenciju i njihovi propagandisti, učenje programiranja ostaje potrebnije nego ikad. U ovom četvrtom dijelu kursa programiranja u Pythonu s Linuxom nastavit ćemo objašnjavati kako razumjeti paradigmu objektno orijentiranog programiranja. Imajte na umu da se link do prethodne lekcije nalazi na kraju posta.
Iako su agenti i modeli umjetne inteligencije sposobni razumjeti i pisati kod, i dalje je potrebno da im čovjek može dati detaljne upute. onoga što mora uraditi. Za to nije potrebno samo razumjeti problem koji aplikacija želi riješiti, već i dizajnirati rješenje uzimajući u obzir karakteristike jezika.
Da vidimo možemo li ovo pojasniti analogijom.
Građevinski radnici grade nebodere. Ali prije početka gradnje, potrebni su arhitekti da dizajniraju planove, a inženjeri da izvrše strukturne proračune i dizajniraju električne, plinske i vodovodne priključke. Nakon što je zgrada završena, drugi ljudi će morati odrediti dizajn enterijera. Naravno, iskusni radnici vjerovatno bi mogli obaviti kompetentan posao, pod uslovom da nema komplikacija. Ali u praksi niko ne želi preuzeti taj rizik.
Realnost je da vibra kodiranje daje bolje rezultate što su upute detaljnije. I da su velike kompanije pretrpjele prekide u pružanju usluga i da su im nezamjenjive baze podataka izbrisane od strane previše poduzetnih agenata umjetne inteligencije s nedovoljnim instrukcijama.
Kurs programiranja u Pythonu sa Linuxom
U prethodnim člancima smo vidjeli da se model objektno orijentisanog programiranja zasniva na 4 stuba: objekti, klase, metode i atributi. Klase su predlošci koji se koriste za modeliranje objekata ili entiteta s kojima radimo. Ovi predlošci definiraju atribute koje će objekti imati, dok metode definiraju ponašanje objekta.
Različiti elementi kreirani pomoću šablona uspostavljenog u klasama nazivaju se instance. Na primjer, unutar klase Operativni sistemi imamo instance: Linux, Windows, macOS. Međutim, možda bismo željeli kreirati klase koje se samo neznatno razlikuju od postojećih klasa. Nije potrebno prepisivati kod jer možemo iskoristiti prednost objektno orijentisanog programiranja poznate kao nasljeđivanje.
Pogledajmo sljedeći program s dodanom klasom.
Razlog zašto ne ubacujem kod direktno u članak je, kao što sam već objasnio, taj što platforma koju koristimo za objavljivanje bloga ne podržava uvlačenje. Ova praksa uključuje dodavanje razmaka ili tabulatora (imajte na umu "ili tabulatore" jer se ne mogu miješati) što olakšava razumijevanje koda.
Uvlačenje olakšava hijerarhijsko strukturiranje koda. Razlikovanje blokova koda kao što su petlje, funkcije ili klase. Nadalje, ako ne uvučete svoje Python programe pravilno, oni neće raditi.
Sada analizirajmo program liniju po liniju.
class Sistemas:
Kao što smo vidjeli, ovaj program kreira predložak na kojem će se kreirati instance operativnog sistema.
def __init__(self, nombre, version, derivada):
Ovdje gradimo razred. Prvi dio je automatizirana metoda koja se koristi svaki put kada se nešto kreira. Stavke u zagradama su parametri koje će objekat imati. `Self` se uvijek koristi i odnosi se na objekat. Uvijek dolazi prvi. Ostali parametri su oni koje smo utvrdili u prethodnim časovima: naziv Linux distribucije, verzija i iz koje distribucije je izveden.
self.nombre = nombre
self.version = version
self.derivada = derivada
Ove linije se koriste za kreiranje atributa objekta. To su varijable specifične za objekt koje djeluju kao varijable unutar objekta i bit će zadržane kada je to potrebno.
def mostrar_info(self):
Ova metoda definira kako će se prikazivati informacije o atributima objekta. Parametar `self` označava da se trebaju koristiti samo parametri spremljeni kao atributi.
print(f"Nombre: {self.nombre}")
print(f"Versión: {self.version}")
print(f"Derivada: {self.derivada}")
Ove 3 linije pokazuju da se informacije o atributima prikazuju na ekranu.
class SistemaConPeso(Sistemas):
Ovdje se naš program razlikuje od prethodnog. Dodali smo novu proširenu klasu izgrađenu na prethodnoj. Zato se naziv prethodne klase dodaje nazivu klase u zagradama.
def __init__(self, nombre, version, derivada, peso):
Ovo je konstruktor podređene klase, gotovo isti kao onaj koji smo vidjeli ranije, ali s dodatkom parametra težine.
super().__init__(nombre, version, derivada)
Da bismo izbjegli ponavljanje koda, super instrukcijom govorimo programu da je zadatak rukovanja imenom, verzijom i derivatom odgovornost roditeljske klase.
self.peso = peso
I dalje smo morali voditi računa o spremanju atributa težine.
def mostrar_info(self):
Budući da je cilj izbjeći pisanje dodatnog koda, umjesto kreiranja nove funkcije koja prikazuje dodatne podatke, modificirat ćemo onu koju već imamo.
super().mostrar_info()
Pozovite metodu roditeljske klase da biste postavili kako bi se atributi pohranjeni u njoj trebali prikazivati.
print(f"Peso: {self.peso}
Dodajte informacije o tome kako bi se trebali prikazivati podaci za trenutnu klasu.
sistema = SistemaConPeso("Linux Mint", "22", "Ubuntu", "3GB")
Kreirajte objekat u koji će se pohraniti informacije s novim parametrom i sačuvajte ga u sistemskoj varijabli.
sistema.mostrar_info()
Pozovite metodu odgovornu za prikaz informacija
Naravno, ovaj program nema stvarnu praktičnu upotrebu. Ne bi imalo smisla unositi vrijednosti atributa u kod, jer bi programer bio potreban svaki put kada bi nešto trebalo izmijeniti. Kao što smo vidjeli u primjeru križića-kružića, Python može primati i pohranjivati informacije koje korisnik unosi putem tastature. To može učiniti i čitanjem datoteka ili interakcijom s bazama podataka.
Međutim, bilo je korisno u razjašnjavanju ključnih koncepata objektno orijentisanog programiranja kao što su klase, atributi, konstruktori, metode, nasljeđivanje i polimorfizam. Obećavam da ću u sljedećem članku završiti s raspravom o objektno orijentisanom programiranju i početi govoriti o tome kako se stvari rade u Pythonu.