• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

L#011 – Da VB.Net a Objective-C: Prime considerazioni

By startit | on 26 Marzo 2010 | 2 Comments
Guide Teoriche

VB.NET VS OBJECTIVE-C Provengo da oltre venti anni di programmazione su windows, e devo dire che per creare la mia prima applicazione su iPhone, ho dovuto imparare non solo una nuova piattaforma ma un intero nuovo linguaggio di programmazione.

La frase “quando si sa programmare, si può programmare con qualsiasi linguaggio” è vera, ma è anche vero che per passare da VB Net a Objective c è richiesto qualche sforzo.

Ho preso come piccolo esempio la classica “prima” applicazione di ogni programmatore “Hello, World!”.

Metodi a confronto

In Objective C le chiamate di metodi rappresentano in realtà messaggi inviati agli oggetti in memoria da un piccolo motore di runtime. Si tratta di una distinzione sottile ma importante, che consente di ottenere un comportamento sorprendentemente dinamico in un linguaggio di programmazione che inizialmente potrebbe sembrare piuttosto formale. Per esempio, se richiamate un metodo su un riferimento a un oggetto che risulta nil non si verifica un crash né un errore: il runtime rileva che l’invio di un messaggio a un oggetto inesistente non avrebbe senso, e perciò non lo invia.

Le classi in Objective-C si sviluppano creando un file header e un file di implementazione, che hanno lo stesso nome ma estensioni diverse (.h .m). Nel file .h (l’header) si inseriscono le parti pubbliche della classe: nomi e tipi delle variabili istanza e segnature dei metodi, che descrivono il tipo del valore di ritorno e i parametri. Nel file di implementazione si implementano i metodi con il codice, dichiarando e utilizzando tutte le variabili locali necessarie che sono relative soltanto all’implementazione e non devono essere visibili ad altre classi.

Vediamo un esempio di codice, come anticipato, il classico “Hello, World!”:

// HelloWorld.h

@interface HelloWorld : object

- (id) hello;

@end
// HelloWorld.m

#import "HelloWorld.h"

@implementation HelloWorld

- (id) hello {
    printf("Hello, World!");
}

Per usare la classe appena creata useremo:

HelloWorld *myHello = [[HelloWorld alloc] init];
[myHello hello];

Differente è invece lo stesso caso in Vb.Net:

Public Class HelloWorld
   Public Sub Hello
      Console.WriteLn("Hello, World!")
   End Sub
End Class

Per richiamarlo useremo:

Dim myHello As New HelloWorld
myHello.hello

Una prima differenza rispetto all’Objective-C sta nel fatto che, nel caso del VB.Net, il metodo “hello” può non avere un’implementazione. In questo caso il compilatore produce un avvertimento.

Una possibile soluzione a questo problema, potrebbe essere quella di controllare l’esistenza del metodo, prima del suo richiamo:

Dim myhello As New HelloWorld
If myHello.GetType.GetPropInfo(“Hello”) IsNot Nothing Then myHello.hello

Un’altro modo potrebbe essere quello di trattare l’oggetto appunto come “oggetto”:

Dim myhello As New HelloWorld
Ctype(myhello,object).Hello

Oppure, sempre in VB.Net, potremmo utilizzare gli eventi:

Public Class HelloWorld
    Private WithEvents moHelloWorldEventSource As HelloWorldEvents
    Public Sub New(eventSource As HelloWorldEvents)
        moHelloWorldEventSource = eventSource
    End Sub

    Private Sub Hello Handles moHelloWorldEventSource.Hello
        Console.WriteLn(“Hello World”)
    End Sub
End Class

Public Class HelloWorldEventSource
    Public Event Hello
    Public Sub Hello
        RaiseEvent Hello
    End Sub
End Class

Per invocare quanto appena scritto useremo:

Dim helloEvents As New HelloWorldEventSource
Dim myhello As New HelloWorld(helloEvents)
helloEvents.Hello

Come vedete l’Objective-C in realtà semplifica non poco le cose. Possiamo tranquillamente affermare che lo sforzo per la migrazione da un linguaggio all’altro viene senz’altro ripagato a dovere.

Ci sarebbe ancora molto da scrivere, per adesso meglio fermarsi qui, non voglio dilungarmi troppo sull’argomento e far diventare questo articolo un trattato noioso.

Alla prossima.

Share this story:
  • tweet

Tags: lezioniObjective-cvb.net

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Uno sguardo al runtime Objective-c

    10 Settembre 2013 - 0 Comment
  • Andrea Picchi: Programmare con Objective-C 2.0 per iOS e OS X

    27 Febbraio 2013 - 10 Comments
  • T#107 – Le referenze associative: Aggiungiamo le variabili alle Categorie

    2 Aprile 2012 - 3 Comments

Author Description

2 Responses to “L#011 – Da VB.Net a Objective-C: Prime considerazioni”

  1. 9 Luglio 2010

    Francesco

    L’articolo è magnifico sopratutto per chi come me e te a tuo tempo , viene da vb.net. Per noi credo che l’approccio a questo linguaggio sia tutt’altro che facile perché leggo e studio da quai due settimane e ho capito poco e niente. Risulta invece molto più chiaro quando si confrontano le cose con le proprie conoscenze di vb.net.

    Ti prego scrivine altri , grazie per il magnifico articolo.

    Francesco

  2. 15 Aprile 2011

    Vasa

    Molto interessante, anch’io sto passando da Vb.net a Obj-C. In realtà molti snobbano Vb.net il quale invece ha tantissime qualità e sopratutto il tempo di realizzazione che Obj-C non ha per creare un’appplicazione piu’ evoluta, non solo , ma la sinstassi del Vb.net è Humal Logic ovvero molto vicina ai costrutti mentali del linguaggio umano, cosa che il C ed Obj-c hanno meno.Cio’ non toglei il fatto che tecnicamnete Obj-C abbia anch’esse dei vantaggi sopratutto quello di essere il linguaggio di sviluppo per Mac etc etc.
    Probabilmente appena sarà possibile “basic” per Iphone e Ipad (vedi Realbasic ) avverra una grande migrazione di massa, ma fino a quel momento ci toccherà ( con piacere ) studiare Obj-c.
    Graie comunque di queste lezioni e articoli

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO