Zavart az ' absztrakció ' definíciója miatt az OOP
On február 10, 2021 by adminMegpróbálom megérteni az “absztrakció” definícióját az OOP-ban.
Néhány fő definícióval találkoztam. Valamennyi érvényes? Téved egyikük? “Összezavarodtam. (A szavakat újra megírtam a definícióval).
1. meghatározás:
Az absztrakció az a fogalom, hogy valamilyen objektumot kiveszünk a való világból, és konvertálunk programozási kifejezésekké. Ilyen például egy Human
osztály létrehozása és int health
, int age
, String name
stb. tulajdonságok és eat()
stb. módszerek.
2. meghatározás:
Általánosabb meghatározás. Az absztrakció olyan fogalom, amely bárhol zajlik egy szoftverrendszerben, ahol “a dolgok általánosabbá / egyszerűbbé / elvontabbá tétele” érintett. Néhány példa:
-
Öröklési hierarchia, ahol a magasabb osztályok egyszerűbbek vagy általánosabbak, és általánosabb és elvontabb megvalósítást határoznak meg. Wh A hierarchia alacsonyabb osztályai konkrétabbak és részletesebb megvalósításokat határoznak meg.
-
Kapszulázás segítségével elrejtheti egy osztály megvalósításának részleteit más osztályok elől, ezáltal az osztály jobban “absztrakt” (egyszerűbb) a külső szoftvervilág felé.
3. definíció
Egy másik általános meghatározás: Az absztrakció az a fogalom, amely szerint a hangsúly a dolgok részleteitől és konkrét megvalósításától a dolgok típusaiig (pl. osztályok), az elérhető műveletek (azaz módszerek) stb., ezáltal egyszerűbbé, általánosabbá és elvontabbá téve a programozást. (Erre bárhol és bármilyen körülmények között sor kerülhet a szoftverrendszerben). Erre például kapszulázáskor kerül sor, mert a kapszulázás azt jelenti, hogy elrejti a megvalósítás részleteit, és csak a dolgok típusait, azok általánosabb és elvontabb definícióit mutatja. Anotehr példa egy List
objektum használata a Java-ban. ez az objektum valójában egy ArrayList
vagy egy LinkedList
megvalósítás részleteit használja, de ezeket az információkat az általánosabb List
.
Helyes ezek a definíciók? (A leginkább konvencionális és elfogadott meghatározásra utalok).
Megjegyzések
- Az absztrakció egy " dolgot " határoz meg, hogy a dolog bizonyos TÍPUSA (Animal = > Kutya) annak további szűkítése érdekében (Kutya = > uszkár).
Válasz
Az absztrakció az objektumorientált programozás (OOP) 3 oszlopának egyike. Szó szerint azt jelenti, hogy egy entitást egy rendszerben vagy kontextusban egy adott perspektívából érzékelünk. Felesleges részleteket veszünk ki, és csak azokra a szempontokra összpontosítunk, amelyek szükségesek a szóban forgó kontextushoz vagy rendszerhez.
Íme néhány jó magyarázat:
Önnek mint embernek különböző kapcsolatai vannak különbözőek szerepek. Amikor iskolában vagy, akkor “diák” vagy . Munka közben “Alkalmazott” vagy . Ha kormányzati intézményben tartózkodik, akkor “Állampolgárként” tekintheti meg. . Tehát abból áll, hogy milyen összefüggésben nézünk egy entitást / objektumot. Tehát ha egy bérszámfejtési rendszert modellezök, akkor Alkalmazott (PRN, Teljes munkaidő / Részidős, Megnevezés) . Ha modellezök egy tanfolyam-felvételi rendszert , akkor szempontjait és jellemzőit Diák (tekercs száma, életkor, nem, beiratkozott tanfolyam) . És ha egy társadalombiztosítási információs rendszert modellezök, akkor az adatait Állampolgár (például DOB, Nem, Születési Ország stb.)
Ne feledje, hogy az absztrakció (a szükséges részletekre összpontosítva) különbözik a tokozástól (a részletek elrejtése a külvilágtól). A beágyazás azt jelenti, hogy elrejti az objektum részleteit, és tisztességes felületet biztosít a külvilág entitásainak, hogy kölcsönhatásba lépjenek az adott objektummal vagy entitással.Például, ha valaki meg akarja tudni a nevemet, akkor nem fér hozzá közvetlenül az agysejteimhez, hogy megismerje a nevem. Ehelyett az illető vagy megkérdezi a nevemet. Ha egy vezető fel akarja gyorsítani a járművet, akkor erre a célra van egy interfész (gázpedál, sebességváltó stb.).
Az 1. def nem túl világos. A Def 2 jó, de hajlamos összezavarni az újoncot, amikor megpróbálja összekapcsolni az absztrakciót a kapszulázással és az örökléssel. A Def 3 a legjobb a 3 definíció közül, mivel világosan meghatározza, hogy mi az absztrakció.
Megjegyzések
- Tehát azt mondanád, hogy ' olyan, mint egy általánosítás a specifikáció helyett?
- @samyismyhero Pontosan! Az absztrakcióhoz általános tulajdonságokat és objektumok viselkedését keressük.
- [Animal = > Kutya] absztrakció. Megadhatja, hogy egy " állat milyen részekből állhat létre " kutya létrehozásához. " (farok, lábak, szőrme stb.). Ezután a " Dog " kutyát használhatja egy uszkár, pitbull stb. Meghatározására. Tehát ' kutyafajták deklarálása a " kutya " osztály alapján Állat. "
Válasz
Az 1. definíció határozottan nem absztrakció. Ez pontosabban leírja a modellezést .
A 2. és 3. meghatározás ugyanazt írja le. És mindkettő nagyon jó leírás egy absztrakcióról.
Megjegyzések
- Ez ' !
abstract class Shape
lol!
Válasz
A definíciók mindegyike rendben van.
Az absztrakcióban csak azokra a részletekre összpontosítasz, amelyek fontosak a célod szempontjából.
Első esetben (jelenleg) nem vehet fel valódi embereket a kódjába; egy adott személy olyan részleteire összpontosít, amelyek az Ön célját szolgálják. Lehet, hogy egy másik programban különféle részletekre kell összpontosítania. Ezek egy személy különböző absztrakciói lennének, és mindegyik egyformán érvényes lehet a kontextusában .
A második és a harmadik definíció folytatja ezt az elképzelést, alkalmazva a szoftveres entitásokra.
Vélemény, hozzászólás?