277 Shares 2800 views

PLO – che cosa è questo? I principi di base della programmazione orientata agli oggetti

Perché programmazione orientata agli oggetti è preferito nella maggior parte dei progetti? OLP offre un modo efficace per affrontare la loro complessità. Invece di considerare un programma come una sequenza di istruzioni eseguibili, si rappresenta come un gruppo di oggetti con determinate proprietà e li producono con determinate azioni. Ciò si traduce in una delle applicazioni più chiara, più affidabili e legkosoprovozhdaemyh.

I principi fondamentali della programmazione orientata agli oggetti (OOP) formano a causa di restrizioni sono stati trovati negli approcci preesistenti. Tra di loro – un accesso illimitato ai dati e un gran numero di link, che impongono restrizioni sul cambiamento. La loro consapevolezza e le cause importante capire che cosa la programmazione OOP e quali sono i suoi vantaggi.

linguaggi procedurali

C, Pascal, FORTRAN e lingue simili sono procedurale. Cioè, ogni dell'operatore dice al computer di fare qualcosa: per ottenere i dati, aggiungere i numeri, divisi in sei, il risultato visualizzato. linguaggio procedurale appendice è la lista di istruzioni. Se è piccolo, non è richiesto nessun altro principio organizzativo (spesso indicato come un paradigma). Il programmatore crea un elenco di istruzioni, e il computer li esegue.

Separazione delle funzioni

Quando le applicazioni diventano lista più ingombrante di giri. Pochi possono capire di più di qualche centinaio di istruzioni fino a quando non sono raggruppati. Per questo motivo, la funzione è stato il modo per rendere l'applicazione più comprensibile ai suoi creatori. In alcune lingue, lo stesso concetto può essere chiamato subroutine o procedure.

L'applicazione è divisa in funzioni, ciascuna delle quali ha uno scopo e interfaccia ben definita.

L'idea di separazione delle procedure può essere espansa in un più ampio raggruppamento di oggetto chiamato un modulo, ma il principio è analogo: il raggruppamento di componenti che portano elenchi di documento.

Separazione delle funzioni e moduli – una delle pietre angolari della programmazione strutturata, che per diversi decenni fino a quando l'OLP era che pone paradigma.

problemi di programmazione strutturata

Poiché le applicazioni diventano più grandi, programmazione strutturata cominciando ad avere difficoltà. I progetti diventano troppo complesse. spostato grafica. Si tratta di un gran numero di programmatori. La complessità è cresciuta. I costi riprese fino, il programma è stato spostato ulteriormente, e c'è venuto il crollo.

Analisi delle cause dei fallimenti ha rivelato carenze paradigma procedurale. Indipendentemente da come ben strutturato approccio di programmazione attuata, grandi applicazioni diventano eccessivamente complesso.

Quali sono le cause di questi problemi associati con linguaggi procedurali? In primo luogo, le funzioni hanno accesso illimitato a dati globali. In secondo luogo, le procedure non collegati e valori cattivi simulare il mondo reale.

Se consideriamo questi aspetti nel contesto di software di contabilità di inventario, uno degli elementi più importanti dei dati globali è un insieme di SKU. Diverse funzioni possono riferirsi a loro di immettere un nuovo valore, viene visualizzato, modifiche e così. D.

accesso illimitato

Il programma scritto, per esempio, in C, ci sono due tipi di dati. Locale nascosti all'interno della funzione e le altre procedure non vengono utilizzati.

Quando due o più funzioni hanno accesso agli stessi dati, quest'ultimo deve essere globale. Tale, ad esempio, vengono prese in considerazione le informazioni sui soggetti. I dati globali possono essere tutte le procedure disponibili.

In un programma di grandi dimensioni, ci sono molte caratteristiche e molti elementi globali. Il problema del paradigma procedurale che porta ad un maggior numero di potenziali collegamenti tra di loro.

Come un gran numero di connessioni provoca diversi problemi. In primo luogo, si complica la comprensione della struttura del programma. In secondo luogo, difficile da cambiare. Variazione del dato globale potrebbe richiedere un aggiustamento di tutte le funzioni che hanno accesso ad esso.

Ad esempio, nel programma di contabilità qualcuno decide che il codice oggetto rappresentato dovrebbe consistere non di 5 cifre, e da 12. Ciò richiederà un cambiamento del tipo di dati da breve a lungo. Ora associato al codice funzione deve essere modificato per funzionare con il nuovo formato.

Quando gli elementi vengono modificati in un'applicazione più grande, è difficile dire quali procedure hanno accesso ad essi. Ma anche se questa cifra, cambiando loro possono compromettere il corretto funzionamento con altri dati globali. Tutto è collegato a tutto il resto, quindi un cambiamento in un luogo ritorcersi contro in un altro.

Modellare il mondo reale

La seconda e più importante problema del paradigma procedurale è che la sua collocazione specifica dei dati e funzioni male simula le cose nel mondo reale. Qui abbiamo a che fare con oggetti come persone o automobili. Sono come dati o la funzione. Oggetti complessi del mondo reale hanno attributi e comportamenti.

attributi

Esempi di attributi (a volte chiamati proprietà) per la gente è il colore degli occhi e il nome del post, per una vettura – la potenza e il numero di porte. Come si è scoperto, gli attributi del mondo reale equivalente ai dati del programma. Hanno valori specifici, come il blu (colore degli occhi) o quattro (il numero di porte).

comportamento

Comportamento – è che gli oggetti del mondo reale vengono prodotti in risposta a qualche tipo di impatto. Se chiedete ad un capo per aumento di stipendio, la risposta è "sì" o "no". Se si preme il freno, la macchina si fermerà. E fermare i comportamenti enunciazione sono esempi. Comportamento simile alla procedura: essa è chiamata a fare qualcosa, e lo fa. Pertanto, i dati e le funzioni di per sé non modellano oggetti in modo efficiente del mondo reale.

indirizzamento

L'oggetto in OOP è rappresentato come un insieme di dati e funzioni. Soltanto le procedure che vengono chiamati funzioni membro in C ++, consentono di ottenere il suo valore. Questi sono nascosti e protetti dai cambiamenti. Significati e funzioni sono incapsulate in uno. Incapsulamento e upryatyvanie – termini fondamentali nella descrizione dei linguaggi orientati agli oggetti.

Se si desidera modificare i dati, si sa esattamente quali funzioni interagiscono con loro. Non ci sono altre procedure non possono accedervi. Questo semplifica la scrittura, il debugging, e mantenere il programma.

Un'applicazione consiste tipicamente di diversi oggetti che interagiscono tra loro, provocando le funzioni membro.

Oggi, il linguaggio OOP più utilizzato (programmazione orientata agli oggetti) – C ++ (plus plus). In Java manca di alcune funzionalità, come i puntatori, modelli e l'ereditarietà multipla, che lo rende meno potente e versatile di C ++. C # non ha ancora raggiunto la popolarità di C ++.

Va notato che le cosiddette funzioni membro a metodi C ++ chiamato in alcune altre lingue orientati agli oggetti come Smalltalk. Gli elementi di dati sono chiamati attributi. Chiamare un metodo dell'oggetto lui sta inviando messaggi.

analogia

Potete immaginare gli oggetti delle funzioni aziendali. Nella maggior parte delle organizzazioni, i dipendenti non lavorare un giorno con il personale, il seguente stipendio sovraccarico, e poi una settimana impegnata nel commercio al dettaglio. Ogni reparto ha il suo personale, con mansioni chiaramente assegnate. Ci sono propri dati: indicatori di salario, vendite, personale di contabilità, ecc Le persone nei dipartimenti lavorano con le loro informazioni … La divisione della società, pertanto, facilita il controllo delle operazioni e mantiene l'integrità dei dati. Accounting è responsabile per il libro paga. Se volete sapere la quantità totale di salari pagati ai ramo meridionale nel mese di luglio, non hanno bisogno di approfondire l'archivio. E 'sufficiente inviare una nota al responsabile, attendere fino a che la persona abbia accesso ai dati e invia la risposta alle informazioni richieste. Ciò assicura la conformità alle normative e l'assenza di interferenze esterne. Allo stesso modo un oggetto nella OLP fornisce applicazione organizzazione.

Va ricordato che l'orientamento degli oggetti non si applica ai dettagli del programma di lavoro. La maggior parte delle istruzioni C ++ operatori corrisponde ai linguaggi procedurali come C. Infatti, le funzioni membro in C ++ sono molto simili alle funzioni in C. Solo il contesto più ampio permetteranno di stabilire se l'istruzione procedurale o orientata agli oggetti.

L'oggetto in OOP: Definizione

Quando si considera il problema di programmazione in linguaggio orientato agli oggetti anziché domande sulla sua suddivisione in funzioni separate è un problema nelle strutture di separazione. OOP pensiero è molto più facile da sviluppare applicazioni. Ciò è dovuto alla somiglianza di software e oggetti reali.

Che tipo di cose sono oggetti in OOP? Qui ci sono alcune categorie tipiche.

oggetto fisico in OOP – è:

  • modelli di flusso di trasporto;
  • componenti elettrici nei programmi di progettazione del circuito;
  • modello di economia del paese;
  • aereo nel sistema di controllo del traffico aereo.

Elementi dell'ambiente informatico dell'utente:

  • menù;
  • finestre;
  • grafica (linea, rettangolo, cerchio);
  • unità di tastiera, mouse, stampante, disco.

persone:

  • lavoratori;
  • gli studenti;
  • i clienti;
  • venditori.

informazioni:

  • contabilità;
  • una questione privata;
  • dizionario;
  • tavolo di latitudini e longitudini di insediamenti.

Comunicazione del mondo reale di oggetti e l'OLP è stato il risultato di una combinazione di funzioni e dati che hanno rivoluzionato la programmazione. Tale stretta corrispondenza in lingue procedurali lì.

classe

Oggetti nella OLP – un membro della classe. Che cosa significa? I linguaggi di programmazione sono dotati di tipi di dati. Tipo int, t. E. Un numero intero che è predeterminato in C ++. È possibile dichiarare un qualsiasi numero di variabili Int.

Allo stesso modo, una pluralità di oggetti definito da una classe. Esso definisce le funzioni ed i dati inclusi nelle sue strutture, non la creazione di loro, così come un int non crea variabili.

Class nel PLO – una descrizione di un certo numero di oggetti simili. Prince, Sting e Madonna sono i cantanti. Non c'è nessuno con quel nome, ma la gente può essere chiamato così, se hanno le caratteristiche adeguate. OOP oggetto – questa istanza.

eredità

Nella vita, le classi sono divise in sottoclassi. Ad esempio, gli animali sono divisi in anfibi, mammiferi, uccelli, insetti, ecc. D.

Il principio di questo tipo di divisione è che ogni sottoclasse ha caratteristiche comuni con la classe da cui il. Tutte le vetture hanno le ruote e un motore. Si tratta di caratteristiche che definiscono dei veicoli. Oltre alle caratteristiche generali di ogni sottoclasse ha le proprie caratteristiche. Ci sono molti posti a sedere degli autobus e camion hanno lo spazio per trasportare carichi pesanti.

Analogamente, una classe di base può essere una sottoclasse genitore diversi derivati che possono essere definite in modo che essi condividere le proprie caratteristiche con l'aggiunta. Ereditarietà come funzioni, semplificando il programma procedurale. Se più parti del codice stanno facendo praticamente la stessa, è possibile estrarre gli elementi comuni e metterli in un unico procedimento. zona Tre applicazione può chiamare la funzione per eseguire azioni comuni, ma possono produrre e proprie operazioni. Analogamente, la classe base contiene informazioni comuni al gruppo dei derivati. Una funzione simile riduce l'eredità di programma a oggetti e chiarire la relazione dei suoi elementi.

riciclaggio

Una volta che la classe viene creata e debug, può essere trasferito ad altri programmatori di riutilizzare nelle proprie applicazioni. E 'come una libreria di funzioni che possono essere inclusi in diverse applicazioni.

In OOP, ereditarietà è un'estensione del concetto di uso multiplo. Da una classe esistente, senza cambiarla, siamo in grado di formare uno nuovo con l'aggiunta di altre funzioni. La facilità di riutilizzo del software esistente – un vantaggio importante dell'OLP. Si ritiene che esso fornisce una redditività crescente dell'investimento iniziale.

La creazione di nuovi tipi di dati

Strutture idonee per la creazione di nuovi tipi di dati. Supponiamo che un programma utilizza i valori bidimensionali (ad esempio, le coordinate o latitudine e longitudine), e hanno il desiderio di esprimere l'azione di aritmetica su di loro:

posizione1 = posizione + origine,

dove posizione1, la posizione e l'origine – una coppia di valori numerici indipendenti. Creazione di una classe che include questi due valori, e le dichiarazioni di variabili dei suoi oggetti crea un nuovo tipo di dati.

Il polimorfismo, sovraccarico

Operatori = (uguali) e + (più) utilizzate nella aritmetica posizionale sopra non agiscono come un tipi predefiniti quali int. posizionare gli oggetti, e altri. Non sono predeterminati e impostare da un software. Come fanno questi operatori sanno come gestirli? La risposta sta nel fatto che i nuovi comportamenti possono essere impostati per loro. Queste operazioni saranno membro funzioni Classe Posizione.

Uso degli operatori o procedure a seconda di ciò che stanno lavorando è chiamato polimorfismo. Quando v'è un operatore, come ad esempio + o =, ha l'opportunità di lavorare con il nuovo tipo di dati, si dice che è in sovraccarico. Sovraccarico nella OLP – una sorta di polimorfismo. E 'la sua caratteristica importante.

Un libro sulla OLP "Object-Oriented Programming for Dummies" permetterà a tutti di fare la conoscenza con questo argomento in modo più dettagliato.