Klasė objektiniame programavime aprašas nusakantis tam tikro tipo objektų duomenų struktūrą ir manipuliavimo jais taisyk
Klasė (programavimas)

Klasė (objektiniame programavime) - aprašas, nusakantis tam tikro tipo objektų duomenų struktūrą ir manipuliavimo jais taisykles (elgesį).
Pavyzdžiui, jei aprašome klasę „Žmogus“, galėsime kurti šios klasės objektus kiekvienam konkrečiam asmeniui, šie objektai turės bendrą duomenų struktūrą, tačiau skirtingas reikšmes (skirsis ūgis, svoris, lytis, vardas).
Klasės sąsaja
Kiekviena klasė gali realizuoti vieną ar daugiau interfeisų (sąsajų), kuriuose aprašomos metodų signatūros. Klasė gali būti naudojama tiesiogiai ar per vieną iš realizuojamų interfeisų. Interfeisai leidžia realizuoti tam tikrą funkcionalumą abstrakčiai, tada funkcionalumas vienodai veiks su bet kuria klase, realizuojančia interfeisą.
Klasės struktūra
Klasė aprašo objekte saugomus duomenis, daugelyje programavimo kalbų vieta saugoti tam tikro tipo duomenims yra vadinama , kurių konkrečių reikšmių visuma nusako konkretaus objekto būseną. Geri OOP principai reikalauja, kad objekto būsena turi būti inkapsuliuojama ir gali būti pakeista ar perskaityta tik per klasėje aprašytus metodus.
Kai kurie klasės atributai gali būti bendri visiems tos klasės objektams (t. y. pakeitus vieno objekto atributo a reikšmę, keičiasi ir kito tos pačios klasės objekto atributo a reikšmė). Tokio tipo atributai vadinami atributais.
Klasė taip pat nusako ir duomenų vientisumo taisykles, kurios turi būti tenkinamos po kiekvieno metodo kvietimo. Tai yra esminis skirtumas nuo duomenų struktūrų, kur galima bet kuri įmanoma būsena, tuo tarpu klasės objektas gali pereiti tik į tam tikras būsenas. Nesilaikant inkapsuliacijos, būsenos vientisumas gali būti pažeistas.
Klasėse taip pat apibrėžiamos specialios kūrimo ir naikinimo funkcijos – konstruktorius ir destruktorius. Konstruktorius gali būti naudojamas pradinio objekto sukūrimui (be parametrų) arba objekto sukūrimui pagal pradinius duomenis (su parametrais). Destruktoriuje gali būti atlaisvinami išoriniai resursai, nuorodos į kitus objektus. Į destruktorių panašus metodas būna ir tada, kai nebereikalingus objektus naikina ne programos kodas, o šiukšlių surinktuvas. Tuomet jis vadinamas užbaigikliu (angl. finalizer).
Analogiškai kaip ir statiniai atributai, klasėje gali būti apibrėžti ir statiniai metodai, kurie gali būti naudojami keisti statinių atributų reikšmes. Statiniai metodai, skirtingai nuo nestatinių, taip pat gali būti iškviečiami net ir nesukūrus (neinstancijavus) nei vieno tos klasės objekto. Tokie metodai taip pat dažnai naudojami objektų kūrimui, radimui, naikinimui.
Poklasiai ir viršklasiai
Dažnai klasės vienaip ar kitaip susijusios. Dažniausias sąryšis – paveldimumas, kur žemesnės klasės (ar vaikų klasės) paveldi duomenų struktūras ir metodus iš aukštesnių klasių (tėvinių klasių). Paveldėtos klasės paprastai keičia tėvinės klasės funkcionalumą – prideda naujų metodų ar duomenų, perrašo ar uždraudžia kai kuriuos metodus.
Paveldėjimo ryšys dažnai pakeičiamas junginiu „yra“ (pvz., „Pingvinas yra Paukštis“).
Metodas, apibrėžtas bendresnėje klasėje, gali būti iš naujo deklaruojamas ir apibrėžiamas iš jos kildinamoje konkretesnėje klasėje. Mūsu pavyzdyje metodas Perėti gali būti deklaruotas klasėje Paukštis ir atskirai aprašytas ereliui ir pingvinui, nes šie du paukščiai perėjimo metu elgiasi ne taip pat.
Kiekvienas objektas turi programuotojui nematomą laukelį, tiesiogiai ar netiesiogiai nurodantį būtent šio objekto klasę. Todėl su konkrečiu objektu galima elgtis ir kaip su bendresnei klasei priklausančiu abstrakčiu objektu. Tarkim, galima parašyti funkciją lizdas (Paukštis), kurios parametras gali būti tiek Erelis, tiek ir Pingvinas. Jei toje funkcijoje bus kviečiamas metodas Perėti, kvietimas nukeliaus į būtent to paukščio rūšiai specifinį metodą. Funkcija lizdas bendru atveju nežino, kokį konkrečiai kodą ji iškviečia.
Klasė Paukštis gali turėti savo supaprastintą metodo Perėti versiją, kuri iš bėdos tinka bet kokiam paukščiui. Kitais atvejais metodas Perėti gali būti šioje klasėje tik deklaruotas (abstraktus), neturintis jokio šį veiksmą atliekančio kodo. Abstrakčių metodų turinti klasė vadinama abstrakčia klase. Bet kurio iš tikro egzistuojančio objekto tikroji klasė negali būti abstrakti, tačiau gali būti kildinama iš abstrakčios klasės. Vien abstrakčius metodus turinti klasė pagal apibrėžimą artima interfeisui, tačiau programavimo kalbose jie aprašomi skirtingais raktažodžiais.
Kai kuriose programavimo kalbose (pavyzdžiui, C++ ) viena klasė gali būti kildinama iš daugiau negu vienos klasės, tačiau dauguma suteikia tik vienos klasės paveldėjimo galimybę. Dažnai pasitaikantis kompromisas yra leisti paveldimumą iš vienos interfeisu nešančios klasės bei tuo pat metu iš neriboto skaičiaus interfeisų (C#, Java, Pascal).
Kitos klasės kontekste apibrėžta klasė vadinama vidine (angl. inner class, member class). Vidinės klasės kodas pasiekia visas gaubiančiosios klasės duomenų struktūras (taip pat ir privačias).
Klasės pačios yra objektai. Jas sukuria .
Išnašos
- Klasės apibrėžimas Java kalbai, Oracle dokumentacija
- Edwind Dalorozo (2013). Why Encapsulation Matters. java.dzone.com
- C++ vadovėlis kuriama aiškinamas paveldėjimas iš kelių klasių
- Internetinis C# vadovėlis, kuriama aiškinamos klasių paveldėjimo galimybės
- FreePascal kalbos diagrama. Gali būti tik viena tėvinė klasė bet daugelis sąsajų.
Šiame straipsnyje naudojami diskutuotini terminai. Daugiau apie kompiuterinius terminus skaitykite žodynėlyje. |
Autorius: www.NiNa.Az
Išleidimo data:
vikipedija, wiki, lietuvos, knyga, knygos, biblioteka, straipsnis, skaityti, atsisiųsti, nemokamai atsisiųsti, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, pictu, mobilusis, porn, telefonas, android, iOS, apple, mobile telefl, samsung, iPhone, xiomi, xiaomi, redmi, pornografija, honor, oppo, Nokia, Sonya, mi, pc, web, kompiuteris, Informacija apie Klasė (programavimas), Kas yra Klasė (programavimas)? Ką reiškia Klasė (programavimas)?
Klase objektiniame programavime aprasas nusakantis tam tikro tipo objektu duomenu struktura ir manipuliavimo jais taisykles elgesį Pavyzdziui jei aprasome klase Zmogus galesime kurti sios klases objektus kiekvienam konkreciam asmeniui sie objektai tures bendra duomenu struktura taciau skirtingas reiksmes skirsis ugis svoris lytis vardas Klases sasajaKiekviena klase gali realizuoti viena ar daugiau interfeisu sasaju kuriuose aprasomos metodu signaturos Klase gali buti naudojama tiesiogiai ar per viena is realizuojamu interfeisu Interfeisai leidzia realizuoti tam tikra funkcionaluma abstrakciai tada funkcionalumas vienodai veiks su bet kuria klase realizuojancia interfeisa Klases strukturaUML notacija Klase apraso objekte saugomus duomenis daugelyje programavimo kalbu vieta saugoti tam tikro tipo duomenims yra vadinama kuriu konkreciu reiksmiu visuma nusako konkretaus objekto busena Geri OOP principai reikalauja kad objekto busena turi buti inkapsuliuojama ir gali buti pakeista ar perskaityta tik per klaseje aprasytus metodus Kai kurie klases atributai gali buti bendri visiems tos klases objektams t y pakeitus vieno objekto atributo a reiksme keiciasi ir kito tos pacios klases objekto atributo a reiksme Tokio tipo atributai vadinami atributais Klase taip pat nusako ir duomenu vientisumo taisykles kurios turi buti tenkinamos po kiekvieno metodo kvietimo Tai yra esminis skirtumas nuo duomenu strukturu kur galima bet kuri įmanoma busena tuo tarpu klases objektas gali pereiti tik į tam tikras busenas Nesilaikant inkapsuliacijos busenos vientisumas gali buti pazeistas Klasese taip pat apibreziamos specialios kurimo ir naikinimo funkcijos konstruktorius ir destruktorius Konstruktorius gali buti naudojamas pradinio objekto sukurimui be parametru arba objekto sukurimui pagal pradinius duomenis su parametrais Destruktoriuje gali buti atlaisvinami isoriniai resursai nuorodos į kitus objektus Į destruktoriu panasus metodas buna ir tada kai nebereikalingus objektus naikina ne programos kodas o siuksliu surinktuvas Tuomet jis vadinamas uzbaigikliu angl finalizer Analogiskai kaip ir statiniai atributai klaseje gali buti apibrezti ir statiniai metodai kurie gali buti naudojami keisti statiniu atributu reiksmes Statiniai metodai skirtingai nuo nestatiniu taip pat gali buti iskvieciami net ir nesukurus neinstancijavus nei vieno tos klases objekto Tokie metodai taip pat daznai naudojami objektu kurimui radimui naikinimui Poklasiai ir virsklasiaiPaveldimumas Daznai klases vienaip ar kitaip susijusios Dazniausias sarysis paveldimumas kur zemesnes klases ar vaiku klases paveldi duomenu strukturas ir metodus is aukstesniu klasiu teviniu klasiu Paveldetos klases paprastai keicia tevines klases funkcionaluma prideda nauju metodu ar duomenu perraso ar uzdraudzia kai kuriuos metodus Paveldejimo rysys daznai pakeiciamas junginiu yra pvz Pingvinas yra Paukstis Metodas apibreztas bendresneje klaseje gali buti is naujo deklaruojamas ir apibreziamas is jos kildinamoje konkretesneje klaseje Musu pavyzdyje metodas Pereti gali buti deklaruotas klaseje Paukstis ir atskirai aprasytas ereliui ir pingvinui nes sie du pauksciai perejimo metu elgiasi ne taip pat Kiekvienas objektas turi programuotojui nematoma laukelį tiesiogiai ar netiesiogiai nurodantį butent sio objekto klase Todel su konkreciu objektu galima elgtis ir kaip su bendresnei klasei priklausanciu abstrakciu objektu Tarkim galima parasyti funkcija lizdas Paukstis kurios parametras gali buti tiek Erelis tiek ir Pingvinas Jei toje funkcijoje bus kvieciamas metodas Pereti kvietimas nukeliaus į butent to paukscio rusiai specifinį metoda Funkcija lizdas bendru atveju nezino kokį konkreciai koda ji iskviecia Klase Paukstis gali tureti savo supaprastinta metodo Pereti versija kuri is bedos tinka bet kokiam pauksciui Kitais atvejais metodas Pereti gali buti sioje klaseje tik deklaruotas abstraktus neturintis jokio sį veiksma atliekancio kodo Abstrakciu metodu turinti klase vadinama abstrakcia klase Bet kurio is tikro egzistuojancio objekto tikroji klase negali buti abstrakti taciau gali buti kildinama is abstrakcios klases Vien abstrakcius metodus turinti klase pagal apibrezima artima interfeisui taciau programavimo kalbose jie aprasomi skirtingais raktazodziais Kai kuriose programavimo kalbose pavyzdziui C viena klase gali buti kildinama is daugiau negu vienos klases taciau dauguma suteikia tik vienos klases paveldejimo galimybe Daznai pasitaikantis kompromisas yra leisti paveldimuma is vienos interfeisu nesancios klases bei tuo pat metu is neriboto skaiciaus interfeisu C Java Pascal Kitos klases kontekste apibrezta klase vadinama vidine angl inner class member class Vidines klases kodas pasiekia visas gaubianciosios klases duomenu strukturas taip pat ir privacias Klases pacios yra objektai Jas sukuria IsnasosKlases apibrezimas Java kalbai Oracle dokumentacija Edwind Dalorozo 2013 Why Encapsulation Matters java dzone com C vadovelis kuriama aiskinamas paveldejimas is keliu klasiu Internetinis C vadovelis kuriama aiskinamos klasiu paveldejimo galimybes FreePascal kalbos diagrama Gali buti tik viena tevine klase bet daugelis sasaju Siame straipsnyje naudojami diskutuotini terminai Daugiau apie kompiuterinius terminus skaitykite zodynelyje