Rezumat: Clase. Relațiile dintre clase. Raportul dintre clienți - furnizori. relație de moștenire. Unică moștenire. Părinții și moștenitori. Strămoși și descendenți. Că descendenții moștenesc. Ce se poate schimba descendenții. Atribuirea unilaterala. Tastarea și legare - statică și dinamică. Polimorfism. clase de proiectare. clase abstracte. Clasele de comportament.
Relațiile dintre clase
Fiecare clasă. așa cum a fost observat adesea, joacă două roluri: este un modul - o unitate de arhitectură, și are un sens substanțial, identificând un anumit tip de date. Dar clase de sistem software - un ansamblu în care clase joacă rolurile lor, nu sunt independente - acestea sunt toate într-o anumită relație unul cu celălalt. Există două tipuri principale de relații între clase definite în sistemele orientate pe obiecte. Prima atitudine „clienții și furnizorii.“ adesea numit un raport de cuiburi client, sau raportul (încorporarea). A doua moștenire atitudine „părinți și moștenitori se numește atitudine.
1. Determinarea clasele A și B sunt în raportul dintre „client-furnizor“ în cazul în care unul dintre câmpurile din clasa este clasa de obiect A. Clasa A este un furnizor de Clasa B Clasa B Clasa A de client numit.
Ambele relații - moștenire și investiții - sunt tranzitive. Dacă B - Client A. și C - client B. rezultă că C - Client A. Dacă B - moștenitorul A. și C - moștenitorul B. rezultă că C - un moștenitor.
Definiții 1 și 2 set clienții și furnizorii direcți sau imediate, părinții direcți și moștenitori. Din cauza necesității de a introduce conceptul de nivel tranzitiv. clienții și furnizorii direcți, moștenitorii direcți ai părinților și sunt adecvate nivelul 1 (nivel de client 1, nivelul 1, furnizorii și așa mai departe). Urmată de o definiție recursivă. k nivel de client de client directă aparține nivelul k + 1.
Pentru relația moștenire, folosind o terminologie împrumutată de la limbaj natural. clase descendent direct sunt adesea numite clase filial. Părinții indirecte sunt numite strămoși, și urmașii lor indirecte - descendenți.
Rețineți că lanțul de cuibărit și moștenirea poate fi destul de lung. În practică, aceasta se poate satisface lungimea lanțului 10. De exemplu, clasele de bibliotecă care alcătuiesc sistemul Microsoft Office, construit în întregime pe atitudinea de cuibărit. Atunci când se lucrează cu obiecte de software Word, puteți începe cu obiectul specificat de aplicația Word. și ajunge la obiectul care definește un singur caracter într-un cuvânt o propoziție a unuia dintre documente Word deschise. Pentru a selecta obiectul dorit, puteți seta acest șir: aplicație Word - o colecție de documente - documentul - zona documentului - o colecție de paragrafe - alineatul - o colecție de propuneri - o propunere - o colecție de cuvinte - cuvinte - colectare simboluri - simbol. În acest lanț, fiecare noțiune corespunde la clasa biblioteca Microsoft Office, în cazul în care fiecare pereche de clase învecinate legate de „furnizor-client“.
Clasele FCL bibliotecă sunt legate ca raportul de cuibărit. și relația de moștenire. lanț de moștenire pe termen lung sunt destul de tipice pentru această bibliotecă de clasă.
Raportul „este“ și „este“
Atunci când clase de proiectare sunt de multe ori se pune întrebarea, ceea ce este relația dintre clase pentru a construi. Luați în considerare un exemplu foarte simplu de două clase - Square și dreptunghi. care descrie patrate si dreptunghiuri. Probabil, este clar că aceste clase ar trebui să fie legate mai mult relația de moștenire. decât cuibărit; mai puțin clar este întrebarea, la care dintre aceste două clase ar trebui să facă un părinte. Un alt exemplu de două clase - mașini și persoană. descrierea vehiculului și persoana. Ce relație cu aceste clase trebuie să fie asociate clasa Person_of_Car. descriind proprietarul masinii? Poate el să fie moștenitorul ambelor clase? Găsiți răspunsurile corecte la aceste întrebări de proiectare clasa ajută înțelegerea că atitudinea de „client-furnizor“ definește relația „are“ ( „a“). și raportul specifică relația moștenire „este“ ( „este o“). În cazul claselor și Piața Dreptunghi a înțeles că fiecare obiect este pătrat „este un“ dreptunghi, astfel încât între aceste două clase există o relație de succesiune. iar clasa părinte este clasa dreptunghi. iar clasa Square este descendent său.
În cazul automobilelor, oameni și proprietarii de automobile vor aprecia, de asemenea, că proprietarul „a“ si masina „este“ persoană. Prin urmare, clasa Person_of_Car este un client al clasei Car și moștenitorul clasei Person.
Raportul dintre imbricare
Luați în considerare două clase A și B. cuiburi raportul aferent. Ambele clase sunt folosite pentru a demonstra ideile și aranjate, pur și simplu pentru că, fără a suporta o semnificație specială. Să furnizorul de clasa-A a fost deja construit. În clasa două câmpuri, constructorul, o statică și o metodă dinamică. Iată textul:
Acum vom construi o clasa B - clasa de client A. Clasa va fi aranjate într-o manieră similară, dar în plus va avea unul dintre domeniile sale interioare obiecta clasa A:
Notă: constructorul de client (clasa B) este responsabil pentru inițializarea câmpurile de clasă, astfel încât trebuie să creeze obiect furnizor (clasa A), provocând, de regulă, furnizor de designer. În cazul în care furnizorul de a crea obiectele necesare argumente, acestea ar trebui să fie menționate constructor de client, la fel ca în exemplul nostru.
Odată ce proiectantul a creat un câmp - obiect furnizor - metode de clasă pot folosi acest obiect, determinând clientul metodele disponibile și furnizorului câmpurile de clasă. Metoda Clasa B - MethodB1 începe cu un apel: inner.MethodA. folosind un serviciu oferit de o clasă A.