Video: Rank Fight 2 - Ethology of Shepherd Dogs 03. - ранжирование борьба 2025
Este normal să clasificăm obiectele în categorii și să organizăm categorii în subcategorii. Dacă căutați un loc de trăit, veți găsi categorisirea unei locuințe ca o casă, un apartament, o casă, un condominiu, un conac și așa mai departe. Casele pot, la rândul lor, să fie organizate în continuare prin stiluri cum ar fi ranch, split-level, colonial, and saltbox. UML vă oferă notația de a captura aceste tipuri de clasificări - cunoscute și sub numele de generalizare și specializare - și le puteți folosi ca modeler și programator.
Unii dezvoltatori orientați spre obiecte vor merge la mari durate pentru a salva o mică lucrare. Atunci când pot modela ceva o dată și reutilizează, sunt interesați. Dacă pot scrie o metodă (codul de program pentru o operațiune) pentru o clasă o singură dată și o pot folosi de mai multe ori, atunci le înscrieți pentru o productivitate mai mare. Dacă doriți să economisiți timp prin specificarea atributelor și a operațiilor o dată și apoi reutilizarea lor de mai multe ori, citiți mai departe.
Pe măsură ce definiți clase, este posibil să observați că unele clase au aceleași atribute sau aceleași operații. În acest caz, plasați aceste caracteristici comune (atribute, operații și așa mai departe) într-o clasă mai generică numită superclama . Clasele care împărtășesc caracteristicile comune sunt cunoscute ca subclasele ale superclasei. De exemplu, lungimea materialului înregistrat pe o casetă video, o bandă audio, un compact disc sau un film de film este un atribut al tuturor celor patru tipuri de discuri înregistrate. Aceste clase pot împărtăși și alte atribute, cum ar fi dimensiunile lor fizice și data pe care fiecare dintre acestea a fost utilizată pentru a face o înregistrare. În acest caz, superclasa ar fi RecordedMedia, subclasele ar fi Videotape, Audiotape, CompactDisc și MovieFilm, iar unele atribute partajate ar putea include Lungime înregistrată și TotalLength.
Acest proces de identificare a atributelor sau a operațiilor similare între clase este cunoscut ca generalizarea . De exemplu, generalizați atributul recordLength într-o clasă mai generică numită RecordedMedia. Procesul de afișare a unei generalizări în UML este simplu:
1. Identificați subclasele.
Localizați clasele care au aceleași atribute și / sau operații. Aceste clase sunt subclasele tale.
2. Creați o superclasă.
Oferiți o superclasă pentru a ține atributele și / sau operațiile comune ale subclaselor. Dă superclasei un nume care clasifică toate subclasele. Plasarea superclasei deasupra subclaselor din diagramă facilitează citirea, dar nu este necesară.)
3. Adăugați funcții comune superclasei.
Înlăturați atributele și operațiile comune din subclasele și plasați-le (o singură dată) în superclaj.
4. Desenați o relație de generalizare.
Desenați o linie de generalizare din fiecare subclasă în superclaj. În UML, linia de generalizare este reprezentată ca o linie solidă cu un cap de săgeată gol la capătul superclasei. În UML, o linie cu vârful săgeții goale care conectează o subclasă la o superclasă este cunoscută ca o relație de generalizare.
După ce creați o superclasă cu caracteristici comune, cum ar fi atributele și operațiile, subclasele moștenesc acele caracteristici din superclaj. În acest fel trebuie doar să scrieți caracteristicile comune o dată în superclaj, în loc de multe ori în fiecare din subclasele.
Puteți afla dacă aveți o generalizare prin căutarea limbii pe care dvs. (sau alții) o folosiți pentru a descrie relația dintre clase. Rețineți că în descrierea mediilor înregistrate și a diverselor sale tipuri, cum ar fi casetele video de mai sus în această secțiune, a apărut expresia "patru tipuri de înregistrări media". Dacă vă aflați folosind expresii precum "genul" sau "tipul", atunci sunt șanse să aveți o generalizare pe mâini.
Spune că unul dintre clienții tăi este preocupat de urmărirea materialelor dintr-o arhivă. Acest client a acumulat diferite tipuri de tipuri de medii înregistrate, cum ar fi casete video și casete audio. Ca modele, trebuie să surprindeți diferențele dintre aceste medii, precum și asemănările lor. Diagrama din Figura 1 prezintă începuturile mai multor generalizări, aranjate într-o ierarhizare a moștenirii .
Figura 1: Ierarhie simplă de moștenire.
Dezvoltatorii folosesc termenul generalizare sau moștenire pentru a se referi la același concept de reutilizare a atributelor și operațiilor partajate pe care le afișați într-o superclasă și reutilizarea în subclase. Generalizarea se referă la conceptul generalizării de la specific (subclasele) la cele generice (superclase). Moștenirea se referă la efectul generalizării asupra subclaselor.
Când vedeți o relație generalizare între clase, semnificația sa este foarte diferită de cea a unei relații între clase. O asociere este în cele din urmă o relație între multe obiecte - unele instanțe ale unei clase au o relație (legătură) cu instanțele celeilalte clase. Într-o relație de generalizare între clase , relația este cu adevărat despre clase. Cel mai bine puteți spune este că un obiect creat dintr-o subclasă conține toate caracteristicile subclaselor și ale superclasei.
Aveți un obiect dintr-o clasă într-o relație de generalizare. Chiar dacă arătați două clase, subclasa și superclajul, aveți doar un obiect care se creează. Vă puteți gândi că un obiect al clasei Videotape este, de asemenea, un obiect al clasei RecordedMedia din cauza moștenirii. Figura 2 prezintă un obiect creat din clasa Videotape cu toate atributele sale.(Exemplul unei clase este reprezentat ca un simbol obiect.) Nu aveți două obiecte diferite (unul pentru RecordedMedia și unul pentru Videotape), doar un obiect. Când a fost creat obiectul vtu83-1023, au fost setate toate valorile atributelor sale. Înregistrarea pe bandă este de 57 de minute. Lungimea totală a benzii fizice este de 60 de minute. Banda este o casetă video Umatic cu o înălțime de 10 centimetri, o lățime de 7 centimetri și o adâncime de 1,5 centimetri. Înregistrarea este analogică și un jurnal al conținutului benzii este atașat la banda pentru ca arhivatul să se refere.
Figura 2: O instanță care prezintă toate atributele moștenite.
Aveți doar o instanță definită de o subclasă și de superclajul acesteia. Subclasa și superclajul pot avea o operație constructor (pentru a crea instanța) și o operațiune destructor (pentru a distruge instanța). Când software-ul dvs. rulează și creați o instanță a unei subclase, constructorul superclasei este executat mai întâi, urmat de constructorul din subclasă. Când vine momentul să eliminați instanța pe care ați creat-o, distrugătorul subclasei este numit mai întâi, urmat de distrugătorul superclasei. Dacă lucrurile sunt mai complexe deoarece aveți subclase de subclase, amintiți-vă: Constructorii sunt invocați din partea de sus a ierarhiei de moștenire în partea de jos; destructorii sunt chemați în ordine de la cea mai mică subclasă până la cea mai înaltă superclazie.
