Hämmentynyt ' abstraktio ' -määrityksestä OOP: ssa
On helmikuu 10, 2021 by adminYritän ymmärtää ”abstraktion” määritelmää OOP: ssa.
Olen törmännyt muutamaan päämäärittelyyn. Ovatko ne kaikki päteviä? Onko joku heistä väärässä? Olen hämmentynyt. (Kirjoitin määritelmän uudelleen omilla sanoillani).
Määritelmä 1:
Abstraktio on käsite ottaa jokin esine reaalimaailmasta ja muuntaa se ohjelmointitermeiksi. Esimerkiksi Human
-luokan luominen ja sen antaminen int health
, int age
, String name
jne. ominaisuudet ja eat()
jne. menetelmät.
Määritelmä 2:
Yleisempi määritelmä. Abstraktio on käsite, joka tapahtuu missä tahansa ohjelmistojärjestelmässä, jossa ”asioiden tekeminen yleisemmäksi / yksinkertaisemmaksi / abstraktimmaksi” on mukana. Muutama esimerkki:
-
Perintöhierarkia, jossa ylemmät luokat ovat yksinkertaisempia tai yleisempiä ja määrittelevät yleisemmän ja abstraktimman toteutuksen. Hierarkian alemmat luokat ovat konkreettisempia ja määrittelevät yksityiskohtaisemmat toteutukset.
-
Kapseloinnin avulla piilottaa luokan toteutuksen yksityiskohdat muilta luokilta, mikä tekee luokasta entistä tarkemman ”abstrakti” (yksinkertaisempi) ulkopuoliseen ohjelmistoon.
Määritelmä 3
Toinen yleinen määritelmä: Abstraktio on käsite siirtää painopiste asioiden yksityiskohdista ja konkreettisesta toteutuksesta asian tyyppiin (ts. luokat), käytettävissä olevat toiminnot (ts. menetelmät) jne., mikä tekee ohjelmoinnista yksinkertaisempaa, yleisempää ja abstraktimpaa. (Tämä voi tapahtua missä tahansa ja missä tahansa ohjelmistojärjestelmän yhteydessä). Se tapahtuu esimerkiksi kapseloimalla, koska kapselointi tarkoittaa piilottaa toteutuksen yksityiskohdat ja näyttää vain asioiden tyypit sekä niiden yleisemmät ja abstraktit määritelmät. Anotehr-esimerkki olisi List
-objektin käyttäminen Javassa. tämä objekti käyttää tosiasiallisesti ArrayList
tai LinkedList
toteutustietoja, mutta nämä tiedot tiivistetään yleisemmällä nimellä List
.
Onko jokin näistä määritelmistä oikein? (Tarkoitan tavallisinta ja hyväksyttyä -määritystä).
Kommentit
- Abstraktio määrittää " -kohdan " tietyksi tyypiksi asia (Animal = > Koira) kaventaaksesi sitä edelleen (Dog = > Villakoira).
Vastaus
Abstraktio on yksi olio-ohjelmoinnin (OOP) kolmesta pilarista. Se tarkoittaa kirjaimellisesti järjestelmän tai kontekstin kokonaisuuden havaitsemista tietystä perspektiivistä. Otamme tarpeettomia yksityiskohtia ja keskitymme vain niihin näkökohtiin, jotka ovat välttämättömiä kyseiselle kontekstille tai järjestelmälle.
Tässä on hyvä selitys:
Sinulla ihmisellä on erilaiset suhteet eri roolit. Kun olet koulussa, olet ”opiskelija” . Kun olet töissä, olet ”työntekijä” . Kun olet valtion laitoksessa, sinut voidaan nähdä nimellä ”Kansalainen” . Joten se supistuu siihen, mitä missä yhteydessä tarkastelemme entiteettiä / esinettä. Joten jos mallinnan palkanlaskentajärjestelmää , katson sinua työntekijä (PRN, kokopäiväinen / osa-aikainen, nimitys) . Jos mallinnan kurssin ilmoittautumisjärjestelmää , pidän näkökohtiasi ja ominaisuuksiasi Opiskelija (luettelonumero, ikä, sukupuoli, ilmoitettu kurssi) . Ja jos mallinnan sosiaaliturvatietojärjestelmää , tarkastelen tietojasi Kansalainen (kuten DOB, sukupuoli, syntymämaa jne.)
Muista, että abstraktio (keskittyminen tarvittaviin yksityiskohtiin) eroaa kapseloinnista (yksityiskohtien piilottaminen ulkomaailmasta). Kapselointi tarkoittaa kohteen yksityiskohtien piilottamista ja kunnollisen käyttöliittymän tarjoamista ulkomaailman entiteeteille vuorovaikutukseen kyseisen objektin tai entiteetin kanssa.Esimerkiksi, jos joku haluaa tietää nimeni, hän ei voi suoraan käyttää aivosolujani saadakseen tietää, mikä on nimeni. Sen sijaan kyseinen henkilö joko kysyy nimeäni. Jos kuljettaja haluaa nopeuttaa ajoneuvoa, tätä tarkoitusta varten on olemassa liitäntä (kaasupoljin, vaihde jne.).
Ensimmäinen vika ei ole kovin selkeä. Def 2 on hyvä, mutta se pyrkii sekoittamaan aloittelijan, kun se yrittää yhdistää abstraktion kapselointiin ja perintöön. Def 3 on paras kolmesta määritelmästä, koska se määrittelee selkeästi, mikä on abstraktio.
Kommentit
- Joten sanot, että se ' pitää yleistyksenä määrittelyn sijasta?
- @samyismyhero Täsmälleen! Etsimme yleisiä määritteitä ja esineiden käyttäytymistä abstraktiota varten.
- [Animal = > Koira] on abstraktio. Määrität, mitkä osat " Eläimillä " voi olla tarpeen luoda " koiralle. " (häntä, jalat, turkis jne.). Sitten voit käyttää " Koira " -luokkaa villakoiran, Pit Bullin jne. Määrittämiseen. Joten ' koirarotujen julistaminen uudelleen " koiran " luokan perusteella " Eläin. "
Vastaa
Määritelmä 1 ei todellakaan ole abstraktio. Tämä kuvaa tarkemmin -mallinnusta .
Määritelmät 2 ja 3 kuvaavat samaa. Ja molemmat ovat melko hyviä kuvauksia abstraktista.
Kommentit
- Että ' on mitä ajattelin !
abstract class Shape
lol!
Vastaa
Jokainen näistä määritelmistä on hieno.
Abstraktiossa keskityt vain niihin yksityiskohtiin, jotka ovat tärkeitä tarkoituksellesi.
Ensimmäisessä tapauksessa et (tällä hetkellä) voi sisällyttää koodiin oikeita ihmisiä; keskityt henkilön tiettyihin yksityiskohtiin, jotka palvelevat tarkoitustasi. Toisessa ohjelmassa sinun on ehkä keskityttävä eri yksityiskohtiin. Nämä olisivat ihmisen erilaisia abstrakteja, ja kukin voi olla yhtä pätevä kontekstissaan .
Toinen ja kolmas määritelmä jatkavat tätä ajatusta soveltamalla sitä ohjelmistoyksiköihin.
Vastaa