Articles

object-oriented programming (OOP)

Object-oriented programming (OOP) è un modello di programmazione per computer che organizza la progettazione del software intorno ai dati, o oggetti, piuttosto che funzioni e logica. Un oggetto può essere definito come un campo dati con attributi e comportamento univoci.

OOP si concentra sugli oggetti che gli sviluppatori vogliono manipolare piuttosto che sulla logica necessaria per manipolarli. Questo approccio alla programmazione è adatto per programmi di grandi dimensioni, complessi e attivamente aggiornati o mantenuti.

L’organizzazione di un programma orientato agli oggetti rende il metodo vantaggioso per lo sviluppo collaborativo, in cui i progetti sono divisi in gruppi.

Ulteriori vantaggi di OOP includono la riusabilità del codice, la scalabilità e l’efficienza. Anche quando si utilizzano i microservizi, gli sviluppatori dovrebbero continuare ad applicare i principi di OOP.

Il primo passo in OOP è quello di raccogliere tutti gli oggetti che un programmatore vuole manipolare e identificare come si relazionano tra loro-un esercizio spesso noto come modellazione dei dati.

Gli esempi di un oggetto possono variare da entità fisiche, come un essere umano che è descritto da proprietà come nome e indirizzo, fino a piccoli programmi per computer, come i widget.

Una rappresentazione della programmazione orientata agli oggetti
Un esempio delle convenzioni nella programmazione orientata agli oggetti.

Una volta che un oggetto è noto, viene etichettato con una classe di oggetti che definisce il tipo di dati che contiene e qualsiasi sequenza logica che può manipolarlo. Ogni sequenza logica distinta è nota come metodo. Gli oggetti possono comunicare con interfacce ben definite chiamate messaggi.

Principi di OOP

La programmazione orientata agli oggetti si basa sui seguenti principi:

  • Incapsulamento. L’implementazione e lo stato di ciascun oggetto sono detenuti privatamente all’interno di un limite definito o di una classe. Altri oggetti non hanno accesso a questa classe o l’autorità per apportare modifiche, ma sono solo in grado di chiamare un elenco di funzioni pubbliche o metodi. Questa caratteristica di nascondere i dati fornisce una maggiore sicurezza del programma ed evita il danneggiamento involontario dei dati.
  • Astrazione. Gli oggetti rivelano solo meccanismi interni rilevanti per l’uso di altri oggetti, nascondendo qualsiasi codice di implementazione non necessario. Questo concetto aiuta gli sviluppatori più facilmente apportare modifiche e aggiunte nel tempo.
  • Eredità. È possibile assegnare relazioni e sottoclassi tra oggetti, consentendo agli sviluppatori di riutilizzare una logica comune pur mantenendo una gerarchia univoca. Questa proprietà di OOP forza un’analisi dei dati più approfondita, riduce i tempi di sviluppo e garantisce un maggiore livello di precisione.
  • Polimorfismo. Gli oggetti possono assumere più di una forma a seconda del contesto. Il programma determinerà quale significato o utilizzo è necessario per ogni esecuzione di quell’oggetto, riducendo la necessità di duplicare il codice.

Linguaggi di programmazione orientati agli oggetti

Mentre Simula è accreditato come il primo linguaggio di programmazione orientato agli oggetti, i linguaggi OOP più popolari sono:

  • Java
  • JavaScript
  • Python
  • C++
  • Visual Basic .NET
  • Ruby
  • Scala
  • PHP

OOPSLA è la conferenza annuale per la Programmazione Object-Oriented, Sistemi, Linguaggi e Applicazioni.

Critica di OOP

Il modello di programmazione orientato agli oggetti è stato criticato dagli sviluppatori per molteplici motivi. La più grande preoccupazione è che OOP enfatizzi eccessivamente la componente dati dello sviluppo software e non si concentri abbastanza sul calcolo o sugli algoritmi. Inoltre, il codice OOP potrebbe essere più complicato da scrivere e richiedere più tempo per la compilazione.

metodi Alternativi alla programmazione ad oggetti includono:

  • programmazione funzionale
  • programmazione strutturata
  • programmazione imperativa

la Maggior parte dei linguaggi di programmazione avanzati dare agli sviluppatori la possibilità di combinare questi modelli.