Try using it in your preferred language.

English

  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी
  • Magyar
translation

Ez egy AI által fordított bejegyzés.

제이온

[Objektumok] 1. fejezet. Objektumok, tervezés

  • Írás nyelve: Koreai
  • Referencia ország: Minden ország country-flag

Válasszon nyelvet

  • Magyar
  • English
  • 汉语
  • Español
  • Bahasa Indonesia
  • Português
  • Русский
  • 日本語
  • 한국어
  • Deutsch
  • Français
  • Italiano
  • Türkçe
  • Tiếng Việt
  • ไทย
  • Polski
  • Nederlands
  • हिन्दी

A durumis AI által összefoglalt szöveg

  • A szoftverfejlesztésben a gyakorlati tapasztalat fontosabb, mint az elmélet, és egyszerű programok segítségével megérthetjük az objektumorientált tervezés fontosságát.
  • A jegyértékesítő alkalmazás példáján keresztül bemutatjuk, hogyan lehet alacsonyabb függőségi és összekapcsolódási szintű kódot írni, amely rugalmasan alkalmazkodik a változásokhoz, és összehasonlítjuk a eljárásorientált és az objektumorientált programozás különbségeit.
  • Az objektumorientált tervezés olyan kódot hoz létre, amely módosítható, és az objektumok önálló entitások, amelyek felelősek a saját adataikért, és megfelelően kell kezelni az együttműködő objektumok közötti függőségeket.

Bevezetés

Robert L. Glass azt állította, hogy a gyakorlat előbbre való, mint az elmélet. Különösen a szoftverfejlesztésben a gyakorlat vezető szerepet játszik az elmélethez képest, a fejlesztők a legtöbbet akkor tanulják meg, amikor konkrét kóddal dolgoznak. Ezért az elméletet és a fogalmakat félretéve, szeretnénk megvizsgálni egy egyszerű programot.


Jegyértékesítő alkalmazás implementálása

  • Kis rendezvényt szeretnénk szervezni egy kis színház népszerűsítése céljából.
    • Esemény tartalma: sorsolás útján kiválasztott nézőknek ingyenes jegyet küldünk a produkcióra
  • Szelektálnunk kell az esemény nyerteseit és a veszteseket.
    • Esemény nyertesei: jegyek cseréje meghívóra
    • Esemény vesztesei: jegyek megvásárlása pénzért



Mi a probléma?

Robert Martin három funkciót ír le, amelyet egy szoftver modulnak (mérettől függetlenül, akár osztály, csomag, vagy könyvtár, bármi, ami egy programot alkot) teljesítenie kell.


  • Hibátlanul működik futás közben.
  • Módosításra szánják.
    • Egyszerű műveletekkel módosíthatónak kell lennie.
  • Közli az információt a kódot olvasókkal.
    • Könnyen olvashatónak és érthetőnek kell lennie a fejlesztők számára.


A korábban említett jegyértékesítő alkalmazás megfelel az első feltételnek, a hibátlan futásnak, de a módosíthatóság és a kommunikáció szempontjából nem teljesít jól.


Váratlan kód

Nézzük meg, miért nem teljesíti a kommunikációs célt.


  • A Theater osztály enter() metódusa mit csinál?
    • A színház kinyitja a néző táskáját, és megnézi, van-e benne meghívó.
    • Ha a táska tartalmaz meghívót, utasítja az eladót, hogy vegye ki a pénztárnál tárolt jegyet, és tegye a néző táskájába.
    • Ha nincs meghívó a táskában, a néző táskájából kiveszi a jegy árának megfelelő összeget, megvásárolja a jegyet, és a jegyet a táskába teszi.
  • A néző szempontjából a színház, mint harmadik fél, önkényesen kutat a táskájában, elveszi a pénzét és berakja a jegyet.
  • Az eladó szempontjából a színház, mint harmadik fél, engedély nélkül manipulálja a pénztárnál lévő jegyek és pénz értékét.
  • Az érthető kód azt jelenti, hogy a működés nem tér el jelentősen az elvárásainktól, a fenti színház azonban eltér a várakozásainktól.
    • A nézőnek saját maga kell kivennie a pénzét a táskájából, és fizetnie kell az eladónak a jegyért.
    • Az eladónak saját maga kell kivennie a pénztárnál lévő jegyet, átadnia a nézőnek, és a nézőtől kapott pénzt visszatenni a pénztárba.
  • Ezenkívül az enter() metódus megértéséhez számos részletet kell megjegyezni.
    • Az Audience objektumnak Bag objektumja van.
    • A Bag objektum tartalmaz pénzt és jegyet.
    • A TiketSellet objektum jegyeket árul a TicketOffice-ból, a TicketOffice objektum tartalmaz pénzt és jegyet.


Módosításra hajlamos kód

Az enter() metódus két feltételezést tesz.

  • A néző mindig táskát hord magával, hogy pénzt és meghívót tartson benne.
  • Az eladó csak a pénztárnál árul jegyeket.


Mi lenne, ha a következők történnének?

  • A nézőnek nincs táskája.
  • A néző nem pénzzel, hanem hitelkártyával fizet.
  • Az eladó a pénztárnál kívül is árulhat jegyeket.


Például az első követelmény teljesítéséhez el kell távolítani az Audience osztály Bag objektumát, és módosítani kell a Theater osztály enter() metódusát. Ez azért van, mert a Theater osztály túlságosan részletes információkra támaszkodik arra vonatkozóan, hogy a nézőnek van táskája, és az eladó csak a pénztárnál árul jegyeket. Ha ezek közül bármelyik részlet megváltozik, módosítani kell mind az adott osztályt, mind a függő osztályokat (pl. Theater).


Ez az objektumok közötti függőséggel kapcsolatos probléma, a függőség pedig változásokra gyakorolt ​​hatást jelez. Az objektumorientált tervezés azonban célja együttműködő objektumok közösségének létrehozása, amelyek kölcsönösen függenek egymástól, ezért nem szabad a függőséget önkényesen eltávolítani, hanem csak az alkalmazás funkcióinak megvalósításához szükségesminimális függőség fenntartásaés a felesleges függőségek eltávolítása.


Ha a függőség túlzott mértékű az objektumok között, akkor aztmagas összekapcsoltságnak nevezik, és minél magasabb az összekapcsoltság két objektum között, annál nagyobb a valószínűsége annak, hogy együtt kell módosítani őket. Ezért a tervezés célja a lehető legalacsonyabb összekapcsoltság elérése az objektumok között, hogy a módosítások könnyebben végrehajthatók legyenek.


A tervezés javítása

A Theater-nek nem kell tudnia, hogy a nézőnek van táskája, és az eladó a pénztárnál árul jegyeket. A Theater csak azt akarja, hogy a néző belépjen a színházba. Ezért a nézőt autonóm entitássá kell tennünk, aki saját maga kezeli a táskájában lévő pénzt és meghívót, és az eladót autonóm entitássá, aki saját maga kezeli a pénztárnál lévő jegyeket és az értékesítési díjakat.


Növeljük az autonómiát

Azokat az objektumokat, amelyek szorosan összefüggő feladatokat végeznek, és a nem összefüggő feladatokat más objektumoknak delegálják, magas kohézióval rendelkező objektumoknak nevezzük. Az autonóm objektumok létrehozása, amelyek saját adatokat kezelnek, segít az összekapcsoltság csökkentésében és a kohézió növelésében.


Eljárási és objektumorientált

  • Eljárási
    • A Theater enter() metódusa eljárás, az Audience, TicketSeller, Bag, TicketOffice adatok.
    • Az eljárásokat és az adatokat külön modulokban elhelyező megközelítést eljárási programozásnak nevezik.
    • Sokan nem felelnek meg a természetes logikának (pl. a néző maga kezeli a pénzét és a meghívót).
    • Nehéz leszűkíteni az adatok módosításának hatását.
    • A felelősség központosított (a Theater kezeli mindent).
  • Objektumorientált
    • Az adatok és az eljárások ugyanabban a modulban helyezkednek el, ezt objektumorientált programozásnak nevezik.
    • Természetes logikának megfelelő kódot írhatunk.
    • A kapszulázás révén hatékonyan leszűkíthetjük az adatok módosításának hatását.
    • Minden objektum felelős önmagáért.


Továbbfejleszthető.

  • Az Audience osztály Bag osztálya továbbra is passzív lény, amelyet az Audience osztály irányít, ezért a Bag osztályt autonóm objektummá kell alakítani.
  • A TicketSeller osztály TicketOffice osztálya szintén a TicketSeller által irányított, és tetszőlegesen kezelhető. A TicketOffice-ot autonóm objektummá kell alakítani.
    • Azonban a módosítás után a TicketOffice további összekapcsoltságot hozott létre az Audience-szal.
    • A tervezés során a kompromisszumokat kell figyelembe venni. Ebben az esetben a TicketOffice-ot viszonylag passzív objektummá tehetjük, hogy csökkentsük az összekapcsoltságot az Audience-szal.



Igen, hazugság!

  • Bár a valóságban passzív lények, az objektumorientált világba belépve minden aktív és autonóm entitássá válik.
  • Jó, ha a személyeskedés segítségével a passzív objektumokat olyan lényekként képzeljük el, amelyek nevetnek, beszélnek és haragszanak.


Objektumorientált tervezés

Miért van szükség tervezésre?

  • A tervezés a kód elhelyezése.
  • A jó tervezés olyan, amely teljesíti a mai követelményeket, és lehetővé teszi a jövőbeni módosítások zökkenőmentes végrehajtását.


Objektumorientált tervezés

  • A módosítható kód könnyen érthető kód.
  • Az objektumorientált paradigma lehetővé teszi, hogy ugyanúgy írjunk kódot, mint ahogyan látjuk a világot.
  • Az objektumok autonóm lények, amelyek felelősek a saját adataikért.
  • A kiváló objektumorientált tervezés olyan tervezés, amely megfelelően kezeli a együttműködő objektumok közötti függőségeket.


Forrás

  • Objektumok
제이온
제이온
제이온
제이온
[Objektumok] 2. fejezet. Objektumorientált programozás Ez a dokumentum az objektumorientált programozási módszertanokat ismerteti a filmjegy-foglalási rendszer megvalósításához, beleértve a együttműködést, az objektumokat, az osztályokat, az öröklődést, a polimorfizmust, az absztrakciót és a kompozíciót. Bemu

2024. április 28.

[Hatékony Java] 6. pont: Kerülje a felesleges objektum létrehozását Útmutató a Java-ban a felesleges objektum létrehozásának minimalizálásához. A String, Boolean és egyéb immutabilis objektumok esetében célszerű literálokat használni, míg a reguláris kifejezéseknél a Pattern példányokat érdemes gyorsítótárazni. Emellett a

2024. április 28.

[Hatékony Java] 5. pont: Ne adja meg a forrásokat, hanem használjon függőségi injektálást Ha egy osztály külső erőforrásoktól függ, akkor kerülje a szinglettek és a statikus segédprogram-osztályok használatát. A függőségi injektálás segítségével javítható az osztály rugalmassága, újrafelhasználhatósága és tesztelhetősége, és a gyári módszer mi

2024. április 28.

[Nem informatikai szakember, de fejlesztőként akarok túlélni] 14. Gyakran feltett technikai interjúkérdések összefoglalása kezdő fejlesztők számára Útmutató a kezdő fejlesztők számára a technikai interjúra való felkészüléshez. A fő memóriaterület, adatstruktúrák, RDBMS és NoSQL, eljárási és objektumorientált, átírás és túlterhelés, oldalcserélő algoritmusok, folyamatok és szálak, OSI 7-réteg, TCP és
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

2024. április 3.

Hogyan készülhetnek fel a technológiai cégek a „metaverzumban”? A „Let Me Solo Her” hősének története az „Elden Ring” játékban azt mutatja, hogy a technológiai cégeknek a metaverzumban nemcsak a technikai eredményeket, hanem a felhasználókkal való értelmes kapcsolat kialakítását is figyelembe kell venniük.
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

2024. május 8.

Az x3-as tőkeáttételes befektetés kockázatainak megértése: a volatilitás bomlása (volatility decay) A blogbejegyzés egy olyan befektető történetét meséli el, aki álmodik arról, hogy gazdag lesz a 3-szoros tőkeáttételes befektetés révén, de ugyanakkor aggódik a volatilitás bomlása és a befektetés sikertelenségének lehetősége miatt. Emellett a bejegyzés r
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마
(로또 사는 아빠) 살림 하는 엄마

2024. április 21.

Mi ötletemről mit gondol? Az ötlet jelentése nem merül ki pusztán a kreatív gondolkodásban, hanem abban, hogy milyen hatással van az emberek mindennapi életére, és milyen jelentést közvetít. Heidegger filozófiai nézőpontján keresztül visszatekinthetünk az ötletek valódi értékére é
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son
Byungchae Ryan Son

2024. május 7.

A kedvesség színlelése és a kerülő válaszok együtt? A kérdésekre nem megfelelő válaszok, a kedvesség színlelése és a helyzetből való kibúvás a beszélgetés hitelességét csorbítja, és aláássa a kölcsönös bizalmat. Ez a helyzet a üzleti életben is igaz, ahol a becsületes és világos kommunikáció a bizalomépíté
Dream Atelier
Dream Atelier
Dream Atelier
Dream Atelier
Dream Atelier

2024. május 2.

Koncepcionális adatmodellezés A koncepcionális adatmodellezés az entitások elkülönítésének és az entitások közötti kapcsolatok ERD-ként való ábrázolásának folyamata. Az entitások független információs egységek, az attribútumok pedig az entitások által birtokolt adatok. Az azonosítók e
제이의 블로그
제이의 블로그
제이의 블로그
제이의 블로그

2024. április 8.