Pages: [1] 2 3   Go Down
Author Topic: chi sa spiegarmi a cosa servono le classi  (Read 2755 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 52
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

chi sa' spiegarmi in termini molto molto semplici a cosa servono le classi e quando servono e' un passo che nella guida il manuale di arduino non ho ben capito .e poi non riesco a trovare nulla sul sighnificato di  i++ i  =  ma la i a cosa serve ? grazie a tutti
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 336
Posts: 23142
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Le classi sono le basi della programmazione ad oggetti, non si possono spiegare in 2 minuti  smiley
Ti consiglio di leggere da qui
http://programmazione.html.it/guide/lezione/1192/la-programmazione-orientata-agli-oggetti/
in poi, c'è una breve infarinatura sulle classi e sulla programmazione ad oggetti.

i++ significa "prendi il valore di i ed incrementalo di 1". Equivale a i=i+1 oppure a i+=1

Mentre j=++i significa che i viene PRIMA incrementato e POI assegnato a j, mentre j=i++ significa che i viene PRIMA assegnato e POI incrementato.
Logged


Parma
Online Online
Edison Member
*
Karma: 21
Posts: 2421
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La i è una variabile per tenere in memoria un valore.
Con i++ semplicemente si dice di incrementare di 1 questo valore.
Le classi sono un concetto abbastanza complicato per i nuovi alla programmazione, c'è dietro tutto un paradigma sofisticato.
In termini semplicissimi una classe è uno "stampino" per creare degli oggetti che si chiamano anche "istanze".
Questi oggetti possono avere delle proprietà e dei metodi, ovvero dati e azioni, come specificato nello stampino.
Le classi possono poi interagire tra loro.
Un consiglio, lascia perdere per il momento le classi e la programmazione ad oggetti, parti con la programmazione "tradizionale" ed esercitati con semplici algoritmi.

Ciao
Logged

Mestre(VE)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma arduino si può programmare a oggetti? non si programma in c?
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 23
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tutte le librerie sono oggetti smasho smiley

In maniera molto semplicistica puoi pensare a una classe come ad uno strumento che ti serve x fare qualcosa.

Il metodo + diretto per fare qualcosa e scrivere il codice che ad ogni ciclo legge e attua il tutto, questo ogni volta che ti serve lungo il tuo programma.

Quando cominci ad avere 3/4000 righe ( anche molte meno a volte ) riscrivere sempre le stesse cose è noioso e pure poco efficiente, cosi crei una funzione per semplificarti la vita.

Quanto crei molte funzioni, tutte con sopi correlati, allora è il momenti di creare una classe.
Cosi sai che creando l'oggetto esso va a leggersi in automatico ciò che serve, lo memorizza, e prepara i dati, che all'occorrenza restituisce o processa ulteriormente per tutta la lunghezza del tuo prog.
In pratica una classe non è altro che un "cortellino svizzero" + o - specializzato fai da te

Logged

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

momento momento momento.

ma il wiring supporta le classi? perchè avevo cercato di usarle tempo fa ma senza successo  smiley-roll-blue
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 28
Posts: 5515
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

cè chi anche di italiano che era riscito ad usarle non come in java o i linguaggi del pc ma in modo più "semplice" o lesto o murotec mi pare...
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 272
Posts: 21939
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il c non é a oggetti, il C++ sí. Il compilatore che si usa con Arduino é per C e C++ ma viene quasi nascosto che é di C++.
Per gli operatori composti guarda http://arduino.cc/en/Reference/HomePage in basso a sinistra.
Sappi che esiste il comando i++; ma anche ++i; la differenza é che nel caso i++ viene incrementato dopo l' uso e nel caso ++i prima del uso.
prova di scrivere :
Serial.println(i++);
Serial.println(++i);
lo stesso vale per i--;
poi esite i+=2; che é la stessa cosa come i=i+2;
La stessa cosa funziona con -, *,/, &,|
Ciao Uwe
Logged

Mestre(VE)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma quindi dato che il compilatore è anche per c++ posso programmare a oggetti come se stessi programmando in c++ o java? sarebbe interessante dal punto di vista di gestione dei dati!
Logged

Palermo (PA)
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Spremi come un limone il sapere di un genio, e bevilo fino all'ultima goccia =D
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Una classe non è altro che l'astrazione della realtà che contiene delle determinate caratteristiche (attributi) e azioni (metodi). Una classe quindi serve per definire in modo astratto come qualcosa di reale, più in generale è la rappresentazione della realtà, da non confondere con l'oggetto che è l'istanziazione di una classe.

Prendiamo come esempio un automobile (classe):
- L'automobile è una BMW (oggetto, abbiamo reso reale il concetto di automobile)

ATTRIBUTI-> non sono altro che le caratteristiche
-Peso della vettura
-Lunghezza della vettura
-Numero di posti
-ecc..ecc...

METODI-> non sono altro che le azioni che si possono compiere modificamdo dei valori
-Accelleratore
-Freno
-Posizione del volante
-ecc.ecc...

Spero do essere stato abbastanza chiaro smiley-grin
Logged

0
Offline Offline
Shannon Member
****
Karma: 136
Posts: 10525
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, puoi usare molte strutture del c++, con alcune limitazioni. Per esempio l'operatore New, non può essere usato, quindi bisogna fare molta attenzione ai puntatori a classe.

allora in C classico, che non è ad oggetti, si usano i classici file .h, che sono delle librerie, che però possono contenere solo funzioni.

Un bel giorno un tipo si è svegliato e si è detto: ma se anziché contenere solo funzioni, ci facciamo contenere anche variabili, la chiamiamo classe. Ogni classe la facciamo in modo tale che sia una specie di scatola chiusa. Tu non sai cosa avviene all'interno, ma sai che serve a fare qualcosa.

Immagina una macchina: tu non sai come funzionano motore, spinterogeno, o altre cose. Sai però che usando freno, frizione, acceleratore etc.. otterrai dei determinati risultati. (da quì probabilmente l'idea degli "oggetti")
Altro grosso vantaggio, è che sono facilmente riutilizzabili, molto più di un file .h soprattutto per operazioni complesse.
poi esiste tutto il fatto dell'ereditarietà, overloading dei metodi etc... che sono concetti già più avanzati ma molto utili.

in c++ gli oggetti sono un poco più sbatti che in java, perché sono composti da due file:
nomefile.h contiene la dichiarazione di variabili e funzioni utilizzate dalla classe. sono divise in 2 gruppi (in realtà di più, ma per iniziare bastano 2): pubbliche e private. Le classi o funzioni pubbliche, sono come freno e acceleratore, ovvero il modo con cui il resto del programma comunica con la classe. Quelli privati, invece, sono "intoccabili" dall'esterno della classe, e servono per il suo corretto funzionamento.
poi c'è il file .c++ o .cpp (meglio il secondo, nei nomi dei file è sempre bene stare cauti con i simboli, anche se teoricamente il + è standard ascii, meglio evitare sbattimenti a priori)
esso importa il file .h della efinizione, e contiene il corpo delle funzioni dichiarate in modo particolare
nomeclasse::nomefunzione(){}

molte "librerie" arduino in realtà sono classi, come la serial e molte altre.

Un consiglio: prima impara la programmazione in c puro.

se devi gestire dei dati, una struct potrebbe fare al caso tuo.

Diamond39 mi ha preceduto :-)

edit: classe e oggetto sono quasi sinonimi. La classe è il codice scritto della classe, l'oggetto è quel codice instanziato in memoria. possono esistere più oggetti della stessa classe, ma non più classi dello stesso oggetto(sarebbe una ripetizione inutile ed erronea del concetto del paradigma ad oggetti)
« Last Edit: August 09, 2011, 06:14:52 pm by lesto » Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Palermo (PA)
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Spremi come un limone il sapere di un genio, e bevilo fino all'ultima goccia =D
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

si, puoi usare molte strutture del c++, con alcune limitazioni. Per esempio l'operatore New, non può essere usato, quindi bisogna fare molta attenzione ai puntatori a classe.

allora in C classico, che non è ad oggetti, si usano i classici file .h, che sono delle librerie, che però possono contenere solo funzioni.

Un bel giorno un tipo si è svegliato e si è detto: ma se anziché contenere solo funzioni, ci facciamo contenere anche variabili, la chiamiamo classe. Ogni classe la facciamo in modo tale che sia una specie di scatola chiusa. Tu non sai cosa avviene all'interno, ma sai che serve a fare qualcosa.

Immagina una macchina: tu non sai come funzionano motore, spinterogeno, o altre cose. Sai però che usando freno, frizione, acceleratore etc.. otterrai dei determinati risultati. (da quì probabilmente l'idea degli "oggetti")
Altro grosso vantaggio, è che sono facilmente riutilizzabili, molto più di un file .h soprattutto per operazioni complesse.
poi esiste tutto il fatto dell'ereditarietà, overloading dei metodi etc... che sono concetti già più avanzati ma molto utili.

in c++ gli oggetti sono un poco più sbatti che in java, perché sono composti da due file:
nomefile.h contiene la dichiarazione di variabili e funzioni utilizzate dalla classe. sono divise in 2 gruppi (in realtà di più, ma per iniziare bastano 2): pubbliche e private. Le classi o funzioni pubbliche, sono come freno e acceleratore, ovvero il modo con cui il resto del programma comunica con la classe. Quelli privati, invece, sono "intoccabili" dall'esterno della classe, e servono per il suo corretto funzionamento.
poi c'è il file .c++ o .cpp (meglio il secondo, nei nomi dei file è sempre bene stare cauti con i simboli, anche se teoricamente il + è standard ascii, meglio evitare sbattimenti a priori)
esso importa il file .h della efinizione, e contiene il corpo delle funzioni dichiarate in modo particolare
nomeclasse::nomefunzione(){}

molte "librerie" arduino in realtà sono classi, come la serial e molte altre.

Un consiglio: prima impara la programmazione in c puro.

se devi gestire dei dati, una struct potrebbe fare al caso tuo.

Diamond39 mi ha preceduto :-9

Diciamo che tu sei stato più specifico, io non mi sono offermato tanto perchè a parer mio, se no non sa di classi non può parlare di linguaggio orientato ad oggetti. Impara prima il C dato che molti dei linguaggi Object Oriented sono derivanti dal C.

Non ho sottolineato nemmeno le varie caratteristiche dei linguaggi orientati ad oggetti (come l'hide information, come hai spiegato tu) dato che secondo me un forum è il luogo meno adatto per imparare cose che devono essere affrontate sui libri. smiley-grin
Logged

Mestre(VE)
Offline Offline
Jr. Member
**
Karma: 0
Posts: 91
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il fatto è che "so" già programmare in java e all'università utilizzo molto ADT e le loro implementazioni. quindi il fatto di realizzare qualcosa con arduino in cui potessi utilizzare anche quello che sto imparando mi stuzzicava!
grazie per le delucidazioni sul compilatore dell'ide di ardunio e per la dritta sulle struct (di cui ignoravo l'esistenza smiley-razz)
Logged

Palermo (PA)
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Spremi come un limone il sapere di un genio, e bevilo fino all'ultima goccia =D
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il fatto è che "so" già programmare in java e all'università utilizzo molto ADT e le loro implementazioni. quindi il fatto di realizzare qualcosa con arduino in cui potessi utilizzare anche quello che sto imparando mi stuzzicava!
grazie per le delucidazioni sul compilatore dell'ide di ardunio e per la dritta sulle struct (di cui ignoravo l'esistenza smiley-razz)

Ma le struct sono proprio il principio dal quale imparare la programmazione e ad oggetti scusa se te lo dico, ma che razza di università frequenti xD

Comunque, per chi non lo sapesse, le struct non sono altro che un modo di raggruppare tipi di dati differenti, a differenza dei vettori. Le struct non fanno altro, sostanzialmente, di creare dei vettori personalizzati (genericamente si dice che le struct permettono di creare dei nuovi tipi di dati) la cui lunghezza è data dalla somma delle singole lunghezze delle variabili dichiarati nella struttura.
Dimenticavo che per accedere all'interno della truttura si utilizza la Dot Notation.

I conclusione una struttura (indicata con il suffisso struct) viene utilizzata per l'aggregazione di tipi di dati diversi.

P.S. Se avete difficoltà nelle strutture non oso aprire l'argomento puntatori =D
« Last Edit: August 09, 2011, 06:46:30 pm by Diamond39 » Logged

0
Offline Offline
Faraday Member
**
Karma: 31
Posts: 2908
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi arrendo, avete vinto, ho tentato di postare per tre volte, e tutte tre le volte avete detto tutto quello che avevo scritto. smiley-sad

Vabbe che dire,
Quote
Ma le struct sono proprio il principio dal quale imparare la programmazii e ad oggetti scusa se te lo dico, ma che razza di università frequenti xD

Un'università italiana sicuramente.

ciao.
Logged

AvrDudeQui front end per avrdude https://gitorious.org/avrdudequi/pages/Home

Pages: [1] 2 3   Go Up
Jump to: