Peczenyj's Blog

Just Another /Perl|Ruby|C++|Java|Python|JavaScript|Flash|Bash/ Hacker

Hello World Orientado a Objetos

Hoje em dia é raro um desenvolvedor conhecer bem apenas uma linguagem. Em nome da multidisciplinaridade, decidi mostrar algums exemplos do mesmo programa: uma classe HelloWord com um construtor que recebe uma mensagem (“ola mundo”) e um método show() que imprime essa mensagem.

Vejamos um exemplo em C++

#include <iostream>
#include <string>
using namespace std;

class HelloWorld{
string mensagem;
public:
HelloWorld(string mensagem) { // construtor!
this->mensagem = mensagem;
}

void show() { // metodo show
cout << "mensagem: " << this->mensagem << endl;
}
};
int main()
{
HelloWorld obj("ola mundo");
obj.show();
return(0);
}


Agora o mesmo código em Java:

package Hello;

public class HelloWorld{
private String mensagem;
public HelloWorld(String mensagem){
this.mensagem = mensagem;
}
public void show() {
System.out.println("mensagem: " + mensagem);
}
public static void main(String [] args){
HelloWorld obj = new HelloWorld("ola mundo");
obj.show();
}
}


Agora, percebam a simplicidade do Ruby:
class HelloWorld
def initialize(mensagem)
@mensagem = mensagem
end
def show
puts "mensagem: #{@mensagem}"
end
end

obj = HelloWorld.new "ola mundo"
obj.show


Agora em Perl (sim, Perl!)
package HelloWorld;

sub new
{
my ($class, $mensagem) = @_;
my $self = { mensagem => $mensagem };
bless $self, $class; # abençoando a variavel!
return $self;
}

sub show
{
my $self = shift; # sim, ela vem como argumento!
print "mensagem: " . $self->{mensagem} . "\n";
}

my $obj = new HelloWorld("ola mundo");
$obj->show(); # parece artificial, não?

1;


PHP também é:
<?php

Class HelloWorld{
var $mensagem = "";
function HelloWorld($mensagem){
$this->mensagem = $mensagem;
}
function show(){
echo "mensagem : " . $this->mensagem . "<br/>";
}
}

$obj = new HelloWorld("ola mundo");
$obj->show();
?>


Por fim, vamos criar um tipo usando JavaScript
function HelloWorld(mensagem){
this.mensagem = mensagem;
this.show = function(){
alert("mensagem: " + this.mensagem);
}
}

var obj = new HelloWorld("ola mundo");
obj.show();


Edit: Python, atendendo a diversos pedidos
class HelloWorld:
def __init__(self, arg):
self.message = arg

def show(self):
print "mensagem: ", self.message

hello = HelloWorld("Ola Mundo")
hello.show()


A diferença entre uma linguagem e outra está (entre outras coisas) na sintaxe: em Perl eu tenho que criar os mecanismos na mão (com bless e receber $self) mas em Java e Ruby é tudo muito natural. Em Javascript eu não tenho uma construtor propriamente dito (muito menos classes) mas uma função (e crio um objeto dando um new nessa função).

Vou abordar o tema “herança” no proximo post, espero que seja útil :)

Comments

douttorx
Opa cara, que legal o post.
estava procurando hello world em C++.
um abraço.
Cauê
Oi cara!
Sou do Rio grande do sul e faço faculdade de Eng.Elétrica na Unipampa de Alegrete e vi um post teu em um site sobre um programa em C++ que precisava usar a biblioteca math.
Tirei uma duvida ali contigo pq não lembrava que tinha que passar o grau pra radianos antes de transformar.
Eu gostaria que se quando eu tiver alguma duvida eu posso te avisar e quem sabe evoluir meus conhecimentos em C++.
Abraço.
Meu msn é : caue_cmm@hotmail.com
Marcelo Martins
Bah, Perl dói o olho. hehe
Airton Arantes
Só para complementar o post do amigo,Olhem esse post no meu blog:

http://defopenblog.wordpress.com/2008/05/07/e-eu-que-pensei-que-ja-tinha-visto-de-tudo/
Tiago Peczenyj
LG, pena que o comentario destruiu a indentação (que é fundamental no Python). Também esqueci do C#, mas é 99% igual ao Java.

Só não consegui fazer um exemplo em SmallTalk :(
lg
Tiago,

Muito bacana seu post.
Colaborando com a proposta do seu texto, fiz um código, em Python, que ficou assim:

class helloWord():
def __init__(self, msg):
self.hello_msg = msg
def show(self):
print self.hello_msg

a = helloWord(“Ola Mundo !”)
a.show()

Abraços,
Luiz Guilherme
lg.aldabalde em gmail.com
Gallimimus
Pô Thiago faltou em Shell Script ahahahah, abraços e parabéns pelo post.

Carlos Ferreira
http://carnivorosemdentes.blogspot.com/

CRDS - Conselho Regional De Desenvolvedores De Software

Num futuro não muito distante, o carlinhos está desenvolvendo um pequeno sistema de contas a pagar para a Padaria do Manoel. Entretando o seu local de trabalho recebe uma visita de um fiscal do CRDS!

- Pronto
- Sr Carlos Silva?
- É ele.
- Meu nome é Teobaldo, sou fiscal do Conselho Regional de Desenvolvedores de Software. Fiquei sabendo que nesse recindo está sendo desenvolvido um “software”.
- Exato! To desenvolvendo um…
- Antes de mais nada, qual a sua formação?
- Sou formado em ciências da computação pela faculdade VIVA VIVER, do Acre, na modalidade EAD. Meu trabalho de conclusão foi “um sistema escrito em java para a web 2.0”.
- Puxa, ultimamente só tem dado essa faculdade.
- Po, ela custa 49,99 por mês…
- É claro. Continuando, onde está a ART desse sistema?
- Bom, é um sistema pequeno, com menos de mil linhas, precisa ART?
- Claro, e vc pode imprimir o boleto pelo site da CRDS, não tem desculpas.
- Ok. Eu pagarei…
- E onde está a documentação do sistema? Cadê o levantamento de requisitos, análise de impacto, análise de riscos, análise…
- EI! O meu sistema foi feito utilizando metodologias ágeis! É uma mistura de SCRUM com XP proporcionando um contrato de escopo aberto onde eu tento atender as necessidades do cliente, evitando burocracia, trabalhando em sprints de 15 dias…
- Ok, mas o CRDS exige essa documentação no template .doc que vc pode baixar do site
- Mas q .doc ?? Ta maluco, eu uso openoffice no meu linux.
- Linux ?? Vc desenvolve em um sistema operacional não homologado pela CRDS? Se ainda fosse Ubuntu…
- Mas Ubuntu é linux.
- Chega, se não tem documentação, como vc sabe que o sistema funciona?
- Eu uso testes unitários!
- Humm… teste precisa de um profissional habilitado em testes.
- Mas eu uso JUNIT, veja!
- Ei… q java esquisito é esse com esses @ e esses “maior e menor”?
- Isso se chama Annotations e Generics! Ta desde o Java 1.5
- Desculpe mas o CRDS só permite o uso de Java 1.4.2 que é a versão homologada para o Windows E Ubuntu.
- E se eu estivesse usando MacOS ?
- MacOS não foi homologado pelo CRDS ainda.
- Mas java é multiplataforma!
- Certo certo… e o modelo ER?
- Eu uso Hibernate para Abstrair o modelo ER..
- Hibernate ? Ok, terei que embargar o seu sistema…

Comments

felipespsousa
vc dá para um bom comentarista hein petiene!
Jonas Ferreira - Thunder-Boy
Moro, trabalho e me formei em uma faculdade aqui de Rio Branco - Acre, ainda bem que aqui não existem faculdades a este preço, 49.99, se não o conto seria mais real! :)
Tiago Albineli Motta
Sensacional hahahaha
Guilherme
Muito bom!
tiago_stos
Hehe, muito bom. Pena que a piada perde um pouco a grança quando lembramos que algo assim pode acontecer aqui em nosso país em pouco tempo.

Ta certo, não exatamente desse jeito, talvez até pior…
Tiago Peczenyj
Pior q eu esqueci um dialogo: quando o fiscal pergunta sobre os Design Patterns utilizados, mas ficou legal do mesmo jeito :)
Felipe
Isso soa ridículo para qum é da área.

Mas vai mandar um senador ler isso aí :-(
MagoSabeTudo!!!
Muito boa essa!

Espero que nunca aconteça esse tipo de coisa!!!
Cássio Marques
Muito bom! Essa conseguiu ser mais legal que a da Tropa de Elite!
É rir pra não chorar…
Elton
Imagine um post exagerado :-)

Pra Descontrair…


Comments

Gustavo
Lancei uma campanha também.. Comente http://www.lichti.eti.br/onde-o-padre-voador-esteve/ por onde o padre ainda vai passar. O melhor comentário vai ganhar um vôo com balões para ajudar o Padre