Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 1 mese fa

Cos'è un "oggetto" in linguaggio di programmazione Java?

Mi servirebbe una definizione semplice e ben comprensibile, ma allo stesso tempo esaustiva. Grazie!

3 risposte

Classificazione
  • 1 mese fa

    Possiamo dire in maniera forse imprecisa, ma intuitiva e semplice che un oggetto nella programmazione è un dato non primitivo, ovvero un dato complesso che non appartiene ai tipi primitivi già definiti dal linguaggio (int, char, double, long ecc); ma fa parte di un tipo che ha creato e definito il programmatore.

    Un esempio sono le stringhe. Una stringa in Java come la dichiari?

    String nomeStringa;

    String inizia con una lettera maiuscola e l'editor di testo non la colora perché non è una keyword del linguaggio e non è direttamente compresa dal javac e dalla jvm, ma String è una classe che è stata definita nel package java.lang da altri programmatori. In pratica mancava un dato per contenere le stringhe nel core del linguaggio. Per questo i programmatori nelle librerie lo hanno aggiunto. Io posso creare il tipo di dato che voglio con gli oggetti. Come faccio? Lo definisco con una classe. Il tipo è il nome della classe e nella classe spiego a Java come sarà questo tipo di dato, che proprietà avrà, quali possono essere i suoi valori, a cosa serve e cosa può fare ecc.

     

    Detto questo che cosa contiene una classe??? Qual è il codice che ci scrivo per definire questo nuovo tipo di dato?

     

    Definisco quale dato primitivo questo nuovo dato usa. Nel caso delle stringhe, si parla di sequenze di caratteri. Quindi il dato primitivo usato sarà il char, proprio perché la stringa deriva dal carattere.

    Oltre ai dati primitivi, descrivo anche i metodi dell'oggetto, ossia le funzioni che appartengono a quest'oggetto e che di solito elaborano il dato presente nell'oggetto.

     

    Facciamo un'esempio.

    Se io devo fare un programma che simuli un'auto come faccio??

     

    Un'auto ha tante caratteristiche costanti, come le dimensioni (lunghezza, altezza, larghezza), il colore, la cilindrata, i cavalli ecc.

    e anche altre variabili. Come la velocità a cui sta viaggiando, lo stato delle portiere (aperto/chiuso), i giri del motore, la quantità di benzina nel serbatoio, lo stato della macchina (accesa o spenta), i chilometri percorsi ecc.

     

    Adesso come faccio a rappresentare una macchina senza usare gli oggetti?

    Posso creare queste variabili che rappresentano le caratteristiche.

    static float lunghezza;

    static float altezza;

    static float larghezza;

    static String colore;

    static float cilindrata;

    static int cavalli;

     

    float velocità;

    boolean portiera1;

    boolean portiera2;

    boolean portiera3;

    boolean portiera4;

    float giriMotore;

    float quantitaBenzina;

    boolean accesa;

    int chilometri;

    Ora però devo anche fare delle funzioni che mi permettono di farla funzionare.

    Come la funzione accendi, che non fa altro che impostare la variabile accesa a true; o la funzione accelera, che aumenta la velocità, o la funzione decelera che la diminuisce, oppure la funzione frena, che la imposta a 0, o anche la funzione per fare rifornimento di benzina e quella che consuma la benzina (diminuendola mano a mano che va avanti).

    Ma se voglio fare un programma con tante macchine?? Sarebbe scomodo, per x macchine dovrei usare x variabili per ogni cosa o dichiarare Array con x elementi.

    Ma sarebbe scomodo comunque, perché si discosta dal nostro modo di vedere le cose. Abbiamo un insieme di dati "volanti" buttati all'interno del nostro programma e di funzioni che non sembrano avere relazione con i dati.

    Molto meglio definire una classe con le sue variabili (che prendono il nome di attributi) e le sue funzioni (che prendono il nome di metodi) una sola volta per definire un dato di tipo Auto.

     

    Quindi definisco la classe auto

    class Auto {

     attributi...

     metodi...

    }

    E poi posso creare quanti oggetti voglio di tipo Auto con i dati e i metodi incapsulati al suo interno, semplicemente scrivendo

     

    Auto nomeAuto = new Auto();

     

    Quindi intanto si lavora in modo molto più agevole e ordinato, più vicino al modo in cui siamo abituati a pensare.

     

    E poi con l'ereditarietà si possono definire nuovi tipi che derivano da altri tipi composti senza rifare da capo, ma descrivendo solo le differenze. Oppure con il polimorfismo posso fare assumere a un oggetto più forme.

    La programmazione ad oggetti è estremamente potente e per apprezzarla bisognerebbe provarla per i grandi progetti. Sì risparmia molto tempo e fatica, una vera rivoluzione!!!

  • Tip
    Lv 4
    1 mese fa

    Allora. Premessa.

    Java è un linguaggio di programmazione orientato agli oggetti.

    Cos'è un oggetto? 

    E' un'istanza della classe.. per  esempio:

    class Auto

    {  String modello;

        Int anno;

        public setVariabili(int anno,string modello)

        { 

          this.anno = anno;

          this.modello = modello;

         }

    }

    Io posso creare un oggetto Auto, cio'è un'istanza della classe Auto, che ha come attributi il modello e l'anno, e come  metodo ha setVariabili.

    Un oggetto quindi non è una variabile normale come un intero, che ci posso solo mettere solo un numero. Un oggetto si avvicina molto al mondo reale, posso descrivere un libro,un computer , una casa ... insomma qualsiasi cosa!

    Vedila così: 

    Un oggetto di java è come un oggetto della vita reale, qualsiasi.

    Un oggetto reale ha delle caratteristiche , altezza, peso etc... qualsiasi cosa.

    E le caratteristiche dell'oggetto reale tu le memorizzi negli attributi dell'oggetto.

    E manipoli questi attributi attraverso i suoi metodi.

    Spero di essere stato chiaro, è una definizione molto terra terra. 

  • Anonimo
    1 mese fa

    Un OGGETTO  non è altro che un nuovo "tipo" con la possibilità di poterlo utilizzare come "tuttofare" passandogli parametri, istruendolo a compiere determinate funzioni e, infine, eliminarlo dalla memoria. Un tipo assai versatile, un istrione, volendo usare un termine romantico.

Altre domande? Fai una domanda e ottieni le risposte che cerchi.