Programmazione orientata agli oggetti

La programmazione orientata agli oggetti (OOP) è un modo di scrivere programmi per computer che utilizza l'idea di "oggetti" per rappresentare dati e metodi. Di solito, i programmi per computer erano solo una lista di istruzioni per il computer, che diceva al computer di fare certe cose in un certo modo, che si chiama programmazione procedurale. Tuttavia, nella programmazione orientata agli oggetti, i programmi per computer fanno uso di oggetti che parlano tra loro e che cambiano i dati in quegli oggetti, per lavorare in un modo che l'utente desidera. Inoltre, a causa del modo in cui la programmazione orientata agli oggetti è progettata, aiuta lo sviluppatore permettendo al codice di essere facilmente riutilizzato da altre parti del programma o anche da altre persone.

La maggior parte dei linguaggi di programmazione sono un mix di diversi tipi di modi di scrivere programmi per computer. Per esempio, Python permette di scrivere programmi per computer sia nella programmazione orientata agli oggetti che nella programmazione procedurale. Ci sono molti linguaggi di programmazione che permettono di scrivere programmi per computer in OOP, alcuni di questi linguaggi di programmazione lo sono, per esempio: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, ecc.

Caratteristiche

L'idea principale della programmazione orientata agli oggetti è che tutto è un oggetto. Tuttavia, l'oggetto può essere di diversi tipi:

  • Le variabili possono contenere informazioni (o dati) di diverso tipo che sono supportate dal linguaggio di programmazione. Esempi sono il tipo di dati interi e la struttura dei dati delle liste. Variabili è un'idea già disponibile nei linguaggi di programmazione procedurale. Nella programmazione orientata agli oggetti, le variabili sono principalmente note come attributi.
  • Le procedure (note anche come funzioni, metodi o routine) sono un elenco di istruzioni che dicono al computer di prendere input, fare alcuni calcoli o modificare i dati e restituire l'output all'utente. Procedure è anche un'idea già disponibile nei linguaggi di programmazione delle procedure. Nella programmazione orientata agli oggetti, le procedure sono principalmente conosciute come metodi.
  • Le classi sono un insieme di variabili e procedure diverse. Le classi di solito parlano tra loro per apportare modifiche ai dati al fine di lavorare nel modo desiderato dall'utente.

Oggetti è un termine usato per indicare istanze di classi.

Esempi

Negli esempi che seguono, creiamo una classe chiamata Umana. Questa classe contiene gli attributi nome (per il nome della persona) e amico (per il nome dell'amico). Ciascuno dei metodi della classe Human contiene un elenco di istruzioni che fa uso sia del nome che degli attributi dell'amico.

Python

Questo codice è in Python.

classe Umano(oggetto): def __init__(auto, nome, amico=Nessuno): auto. nome = nome auto. amico = amico def say_name(self): print("Il mio nome è "+self. nome) def say_goodnight(self): se self. friend is None: print("Buona notte nessuno.") altro: print("Buona notte "+self. amico. nome) # Creare un nuovo Oggetto umano di nome stephen con nome "Stephen" stephen = Umano("Stephen") # Creare un nuovo Oggetto umano di nome joe con nome "Joe" e stephen come amico joe = Umano("Joe", stephen) stephen. say_name() # Mostra 'Il mio nome è Stephen' stephen. say_goodnight() # Mostra 'Buonanotte nessuno' joe. say_name() # Mostra 'Il mio nome è Joe' joe. say_goodnight() # Mostra 'Buonanotte Stephen'.

Java

Questo codice è in Java.

La classe umana

classe Human { private String name = "senza nome"; // il nome di questo Human private Human friend = null; // l'amico dell'Human // Questo metodo crea un nuovo oggetto Human quando viene dato il nome e l'amico pubblico Human(String name, Human friend) { questo. name = nome; questo. friend = amico;      } // Questo metodo crea anche un nuovo oggetto umano quando viene dato solo il nome pubblico Human(String name) { this. name = name; this. friend = friend = null;      } // Questo metodo crea un nuovo oggetto Human quando non viene dato sia il nome che l'amico pubblico Human() { questo. name = "unnamed"; questo. friend = null;      } void public sayName() { System. out. println("Il mio nome è " + questo. nome); } vuoto pubblico direGoodnight() { se (friend == null) { Sistema. out. println("Buonanotte nessuno.");          } altro { Sistema. out. println("Buonanotte " + amico. nome);          } } }

Un metodo per parlare con la classe umana di cui sopra

classe Main { public static void main(String[] args) { // Creare un nuovo oggetto umano stephen con nome "Stephen" Human stephen = nuovo Human("Stephen"); // Creare un nuovo oggetto umano joe con nome "Joe" e stephen come amico Human joe = nuovo Human("Joe", stephen); stephen. sayName(); // Mostra 'Il mio nome è Stephen' stephen. sayGoodnight(); // Mostra 'Good night nobody' joe. sayName(); // Mostra 'Il mio nome è Joe' joe. sayGoodnight(); // Mostra 'Good night Stephen'      } }

Critica

Anche se la programmazione orientata agli oggetti è popolare, ma ci sono molte persone che pensano che sia cattiva e la criticano.

  • Luca Cardelli ha scritto un saggio intitolato "Bad Engineering Properties of Object-Oriented Languages".
  • Richard Stallman scrisse nel 1995: "Aggiungere OOP a Emacs non è chiaramente un miglioramento; ho usato OOP quando ho lavorato sui sistemi di finestre Lisp Machine, e non sono d'accordo con l'opinione abituale che sia un modo superiore di programmare".
  • Uno studio di Potok et al. ci dice che c'è una differenza molto piccola nella produttività tra l'approccio OOP e quello procedurale.
  • Christopher J. Date ha detto che paragonare l'OOP ad altre cose, specialmente come OOP e l'altra cosa sono collegate, è difficile perché la gente non è d'accordo sul significato di OOP.
  • Alexander Stepanov ha suggerito che l'OOP dà un punto di vista limitato per quanto riguarda la matematica, e lo ha definito "quasi quanto l'Intelligenza Artificiale".
  • Paul Graham, un venditore e programmatore di successo su Internet, ha suggerito che lo scopo dell'OOP è quello di agire come un meccanismo di pastorizia che impedisce ai programmatori medi nelle organizzazioni medie di "fare troppi danni". Questo rallenta anche i programmatori più veloci e migliori che sanno fare le cose in modo più potente e più compatto... [1]

Domande e risposte

D: Che cos'è la programmazione orientata agli oggetti?


R: La programmazione orientata agli oggetti è un modo di scrivere programmi informatici utilizzando gli "oggetti" per indicare dati e metodi.

D: In che modo la programmazione orientata agli oggetti è diversa dalla programmazione procedurale?


R: Nella programmazione procedurale, i programmi informatici sono un elenco di istruzioni per il computer, che gli dicono di fare determinate cose in un certo modo. Nella programmazione orientata agli oggetti, i programmi informatici utilizzano oggetti che dialogano tra loro per modificare i dati contenuti in tali oggetti e per lavorare nel modo desiderato dall'utente.

D: In che modo la programmazione orientata agli oggetti avvantaggia gli sviluppatori?


R: La programmazione orientata agli oggetti consente di riutilizzare facilmente il codice in altre parti del programma o addirittura da altre persone.

D: Per cosa è noto il linguaggio di programmazione Python?


R: Python consente di scrivere programmi informatici sia in programmazione orientata agli oggetti che in programmazione procedurale.

D: Può fare degli esempi di linguaggi di programmazione che consentono di scrivere programmi informatici in programmazione orientata agli oggetti?


R: I linguaggi di programmazione che consentono di scrivere programmi informatici nella programmazione orientata agli oggetti sono: C++, Java, Ruby, Perl, Emarald, Sapphire, PHP, Python, C#, ecc.

D: Cosa sono gli oggetti nella programmazione orientata agli oggetti?


R: Gli oggetti sono entità nella programmazione orientata agli oggetti che contengono dati e metodi.

D: Come funzionano gli oggetti nella programmazione orientata agli oggetti?


R: Gli oggetti interagiscono tra loro per modificare i dati in essi contenuti e per lavorare nel modo desiderato dall'utente.

AlegsaOnline.com - 2020 / 2023 - License CC3