Salvarea obiectului într-un fișier plat
Salvarea obiectului într-un fișier plat 231
Cel mai simplu mod de a demonstra păstrarea obiectului - pentru a crea codul pe care scrie obiectul într-un fișier plat, pentru că mulți oameni nu au acces la bazele de date de obiecte sau baze de date relaționale industriale din computerele lor de origine. Cu toate acestea, în ciuda faptului că utilizarea de fișiere plate sunt bine potrivite ca un bun exemplu în acest sens, utilizarea acestor fișiere în aplicații de afaceri, desigur, nu este un lucru normal.
În această secțiune, vom folosi un fișier plat pentru a ilustra persistența obiect. Am defini un fișier plat ca un simplu sistem de operare de gestionare a fișierelor. Acesta este un concept foarte simplu, astfel încât nu este nevoie să locuiască pe descrierea acestuia.
Mulți oameni nu pe deplin de acord cu faptul că termenul „fișier plat“ de succes. Cuvântul „plat“ înseamnă că obiectul este doar un apartament, ceea ce este adevărat, și există, în anumite privințe. Puteți fi considerat aproape un proces de „aplatizare“ ceea ce este necesar pentru a salva și pentru a muta orice obiect, indiferent de complexitatea acesteia.
Una dintre problemele pe care le-ați fi gândit, este că nu poate salva un obiect în fișierul ca o variabilă simplă - și este adevărat. De fapt, această problemă de a păstra stările de obiecte a dat naștere unui mare segment al industriei crearea de produse software, pe care le vom discuta în detaliu mai târziu în acest capitol. În mod normal, atunci când salvați un număr de variabile într-un fișier pe care îl cunosc ordinea și tipul lor de fiecare variabilă (probabil folosind virgule ca separatori, și așa mai departe. P.), Tu, eventual, scrie într-un fișier. Acest lucru poate fi un fișier, în cazul în care virgule sunt folosite ca separatoare sau orice alt protocol, s-ar putea decide să pună în aplicare.
Problema cu obiectul bazat pe faptul că nu este doar un set de variabile primitive. Un obiect poate fi gândit ca o singură unitate compusă din mai multe părți. Astfel, descompunerea trebuie efectuată obiect pentru a furniza blocuri care pot fi scrise în mediul de stocare cum ar fi un fișier plat. După descompunerea obiectului și a înregistrărilor sale într-un fișier plat va fi o mare problemă care trebuie rezolvată, - restaurarea obiectului, care este, de fapt, reasamblarea acesteia.
O altă mare problemă cu păstrarea obiectelor legate de faptul că un obiect poate conține alte obiecte. Să presupunem, obiect auto include obiecte, cum ar fi motoarele și roți. Când salvați acest obiect într-un fișier plat, trebuie să înțelegeți că doriți să salvați întregul obiect Car. Motoarele și care conțin t. Q. Totalitate.
În limbaje de programare moderne au mecanisme încorporate pentru persistența obiect. De exemplu, în Java, ca și în alte limbi bazate pe C, de multe ori activat conceptul de curgere, atunci când este vorba de I / O. Salvați obiectul într-un fișier pentru Java poate fi, scriind-o în fișierul
232 Capitolul 12. Obiecte persistente
cu Stream. Pentru a înregistra în obiectele Stream trebuie să pună în aplicare fie interfața Serializable. sau interfața Externalizable.
Dezavantajul acestei abordări este că soluția aplicată este de proprietate - trebuie să utilizați Java, pentru ao obține. De fapt, limbajul Java pentru a fi atât „canal“ capete. Celălalt concept, mai adecvat de abordare toleranță la sarcina dorită este de a crea un XML document ca un fișier intermediar și descompunere obiect
urmată de reducerea cu utilizarea de tehnologii deschise legate de XML. Ne vom uita la ambele abordări în capitolul curent. Prima limbă va fi folosită
Java Java serializarea pentru a demonstra tehnologia, si atunci vom recurge la XML strategia pentru punerea în aplicare a NET-un exemplu folosind C #.
fișier serializarea
Ca un exemplu, să ia o privire la Java codul de mai jos clasei Person:
Serializare pachet; import java.util * .; import java.io. *;
Person pune în aplicare Serializable
String nume privat;
Persoana publică (String n)
System.out.println ( "constructor interior pentru persoană"); nume = n;
String getName () Aceasta este o clasă simplă, care conține doar un singur atribut care reprezintă numele persoanei respective. În linia, care ar trebui să se acorde o atenție specială, ea definește o clasă de Seriali- zable. Dacă te uiți la documentația pentru Java, vei realiza că interfața Serializable nu conține cantități mari de informații - de fapt, acesta este destinat exclusiv pentru a indica faptul că obiectul este serializat: Person pune în aplicare Serializable Această clasă include, de asemenea, metoda getName. care returnează numele obiectului. De fapt, cu excepția interfața Serializable. În acest exemplu, nu este nimic nou, care nu ne-am văzut până acum. Acest lucru este în cazul în care începe distractiv.
Salvarea obiectului într-un fișier plat 233
Acum, avem nevoie pentru a crea o aplicație care va înregistra obiectul într-un fișier plat. Această aplicație va fi numit SavePerson si arata ca acest lucru:
Serializare pachet; import java.util * .; import java.io. *;
SavePerson public class implementează Serializable
Persoana Persoana = new Person ( "Dzhek Dzhons");
FOS FileOutputStream = new FileOutputStream ( "Name.txt"); ObjectOutputStream OOS = new ObjectOutputStream (FOS);
System.out.print ( "numele persoanei lui înregistrate sunt:");
> Catch (Excepție e) În ciuda faptului că o parte a acestui cod delves mai complex Javafunktsionalnost, putem înțelege, în general, ceea ce se întâmplă atunci când un obiect este supus serializare (de conversie) și scrie în fișierul. Cu toate că nu au luat în considerare în mod explicit o parte din codul în acest eșantion, de exemplu, codul referitor la fișier IO, puteți studia cu atenție, folosind cărțile menționate la sfârșitul acestui capitol. Până acum ar trebui să înțeleagă că acest lucru este aplicarea efectivă. Cum știm? Acest lucru este demonstrat de faptul că codul include o metodă principală. De fapt, această aplicație face trei lucruri. 1. Creați o instanță a obiectului Person. 2. serializează acest obiect. 3. Scrie acest fișier Name.txt obiect. Actul serialității și înregistrarea obiectului se realizează în următorul cod: oos.writeObject (persoană); Este mult mai ușor decât scris fiecare atribut separat. Foarte convenabil pentru a scrie obiectul direct într-un fișier.
234 Capitolul 12. Obiecte persistente
Încă o dată privind punerea în aplicare și interfața
Este interesant de remarcat faptul că punerea în aplicare care stau la baza conversiei fișierului nu este la fel de ușor ca înainte de interfață. Amintiți-vă că una dintre cele mai importante teme ale acestei cărți - conceptul de separare a interfeței și a punerii în aplicare. Furnizarea de o interfață intuitivă și ușor de utilizat, care ascunde punerea în aplicare de bază, facilitează foarte mult viața utilizatorilor.
Serializare de fișier - un alt mare exemplu al diferenței dintre interfața și punerea în aplicare. interfață de programator este folosit pentru a scrie un obiect într-un fișier. Nu-ți pasă de toate complicațiile tehnice ale comisiei acestei „feat“. este important pentru tine de numai următoarele:
puteți arde fișierul ca o singură unitate;
Puteți restaura un obiect la fel cum l-ați salvat.
Etotozhesamoe, chtopolzovatsyaavtomobilem.Dlyatogochtobyzavestiavtomobil, utilizați o interfață - cheia în contact, care vă permite să porniți motorul. Cei mai mulți oameni nu știu sau de îngrijire cu privire la aspectele tehnice privind modul în care toate lucrările - pentru ei este doar important ca mașina începe.
Programul SavePerson scrie fișier obiect Name.txt. cod de mai jos restabilește acest obiect:
Serializare pachet; import java.io. *; import java.util * .;
public class RestorePerson
RestorePerson publice ()
Persoana Persoana = (Persoana) ois.readObject ();
System.out.print ( "numele persoanei Reamenajat lui:");
> Catch (Excepție e) Cel mai interesant este codul care preia obiectul dintr-un fișier Persoana Persoana = (Persoana) ois.readObject (); Este important de remarcat faptul că obiectul este reconstruit dintr-un fișier plat, acest lucru creează și inițializează o nouă instanță a Persoanei. Această persoană obiect