Archive for dezembro de 2010

Corrida dos 16 bits

O que aconteceria quando os personagens mais famosos dos jogos mais queridos da época mais saudosista dos games disputassem uma corrida? Neste pequeno vídeo, inúmeros personagens da era 16-bits aparecem numa suada corrida para ver quem vence. O maior desafio mesmo é você, espectador, reconhecer e nomear todos os personagens!

Confira o vídeo, que pode te surpreender no final!

Fonte: Jovem Nerd

,

Nenhum comentário.

A despedida do Bomberman

Se você nunca jogou Bomberman na sua vida, convido-o a baixar um emulador de SNES e jogá-lo. Um dos games mais geniais da história (pelo menos pra mim). Este vídeo conta a triste história de um carinha que resolveu ligar para sua família para se despedir… Assista!

Nenhum comentário.

Batalha dos recursos: iOS 4.2 e Android 2.3 (Gingerbread)

Por Cauã Taborda (Droids – Info Online)

O mundo dos smartphones está cada vez mais dividido em dois polos. De um lado estão os usuários de iPhone, do outro os do Android. Mas, com o passar das versões e do tempo, qual deles evolui mais? Que recursos foram adicionados e qual tem mais a oferecer?

Com esses questionamentos resolvemos levantar todos os recursos disponíveis no recém anunciado Android 2.3 (Gingerbread) e no iOS 4.2, última versão do sistema de dispositivos móveis da Apple.

Claro que não se pode deixar de lado a atenção em torno do smartphone da Apple. O hardware do iPhone 4 é muito bom e, mesmo com os problemas da antena, seu design elegante, sensibilidade e qualidade da tela são incontestáveis. Mas, para a felicidade dos fãs de Android, os aparelhos que utilizam a plataforma do Google não perdem. Há modelos com configurações e design bastante apurado, que nada perdem para o dispositivo da Apple.

Como é comum na briga pela liderança, os dois sistemas possuem bastante similaridade, já que devem manter o desenvolvimento tecnológico, acompanhar as tendências do mercado e sobretudo as necessidades dos usuários.

Mas há diferenças que podem fazer com que um usuário escolha um ou outro, ou ainda se arrependa da compra quando sentir falta de algum recurso. Para os que estão em dúvida ou pensam em passar de um lado para outro, colocamos os recursos de cada um deles frente a frente.

Uma grande desvantagem do Android é sua pluralidade de versões. Como a atualização para versões mais atuais depende dos fabricantes, muitos decidem prender os usuários e forçar a compra de um novo aparelho. Na Apple, que conta com um menor número de hardwares, as atualizações são mais justas e para todos.

Esse problema com o Android fica ainda mais grave quando se busca um aplicativo. Muitos desenvolvedores resolvem adotar a plataforma mais nova, deixando as versões anteriores no escuro. O próprio Google deixa de atualizar suas versões de aplicativos, como Gmail.

Do lado da Apple a falta de zelo com o consumidor é outra. A iTunes Store não estar disponível para os usuários brasileiros é uma falha grave. Comprar músicas e atualizar seus álbuns? Nem pensar. Há como fazer gambiarras, registrar uma conta com endereço dos Estados Unidos, mas tudo complicado e impensável para a maioria dos usuários.

Outro ponto negativo é a briga com a Adobe, que deixa os usuários de iPhone e iPad desprovidos de Flash. Coisa que não acontece no Android. Amarrar o usuário a outros produtos da empresa, ou autorizados, também é outro ponto negativo do sistema da maçã. As facilidades de rede seriam muito mais aproveitadas com o protocolo DLNA, não só com AirPlay e AirPrint.

Outro ponto que o Google sai na frente é o acesso à raiz do aparelho, como se ele fosse um pendrive. Basta espetar seu smartphone no computador e pronto. Dá para arrastar, apagar e renomear diretórios e arquivos. No iPhone só dá para retirar as fotos tiradas pela câmera do aparelho, todo o restante deve ser gerenciado via iTunes. Não dá para baixar um arquivo pelo seu telefone e depois transferir para o PC.

Você que chegou agora nesse mundo e os que já estão nele há várias versões, mesmo com seus defeitos Android e iOS estão muito a frente dos outros concorrentes (Symbian e BlackBerry). A briga entre os dois é cada vez mais acirrada. Quem ganha com a disputa são os usuários, que contam com mais opções e recursos interessantes para escolher. E você, caro leitor, qual escolhe? Compartilhe sua preferência.

Fonte: Droids – Info Online

, ,

Nenhum comentário.

Tutorial Series: Orientação a objetos utilizando PHP #3

Ver Tutorial Series: Orientação a objetos utilizando PHP
Ver Tutorial Series: Introdução a orientação a objetos
Ver Tutorial Series: Implementando uma classe e criando objetos a partir dela

Referência e Objeto

No último tutorial, você aprendeu a criar um objeto a partir de uma classe. Esse foi o primeiro contato com o desenvolvimento completo de um programa orientado a objeto, ou seja, primeiramente foi modelada e implementada a classe Cliente e, posteriormente, utilizamos essa classe (na classe UsaCliente) para criar um objeto do tipo Cliente e manipular suas informações em memória. Vamos implementar uma classe chamada UsaCliente e explicar dois conceitos importantes relacionados à criação de objetos.

  1. class UsaCliente {
  2.  
  3. function usaCliente() {
  4. $c = new Cliente();
  5. $c->setNome("Ana");
  6. $c->setEndereco("Rua A");
  7. $c->setCpf("12352241123");
  8. echo $c->getNome();
  9. }
  10. }

Você lembra que a instrução da linha 4 cria um objeto (aloca espaço na memória) do tipo Cliente e que essa, é sintaxe para a criação de um objeto?

Isso está correto! Porém, nessa linha de instrução existem dois conceitos importantes envolvidos na criação de um objeto: o conceito de referência e o próprio conceito de objeto.

$c é uma variável de memória que pode armazenar uma referência (endereço de uma área de memória) para um objeto (área de memória) do tipo Cliente. Portanto, $c armazena uma referência para um objeto do tipo Cliente.

A instrução “new Cliente()” aloca uma área de memória para o objeto do tipo Cliente, isso quer dizer, que é reservada uma área de memória para armazenar os atributos definidos na classe Cliente. Quem faz essa alocação é a palavra new. Ela é responsável por identificar uma área livre na memória e reservar essa área. Essa área de memória reservada é o objeto do tipo Cliente.

Após reservar a área de memória do objeto o método construtor definido na classe desse objeto é chamado. No caso do exemplo acima, o método Cliente() está sendo chamado e dentro desse, foi implementado para que os atributos alocados dentro do objeto cliente sejam inicializados. Após, o endereço de memória da área alocada para o objeto Cliente é atribuído (armazenado) na variável $c. A partir desse momento, $c referencia um objeto Cliente.

A figura abaixo ilustra esse processo de criação de um objeto (linha 4) que na realidade envolve a criação de uma variável que fará referência a um objeto e o armazenamento nessa variável do endereço de memória do objeto criado.

As figuras abaixo ilustram o estado do objeto Cliente cuja identificação é c (o nome do objeto é c) à medida que as linhas do código da classe UsaCliente vão sendo executadas.

Linha 5: é chamado o método ou comportamento setNome(“Ana”) precedido da variável referência c e é passado um nome fixo como parâmetro. Como c “aponta” ou faz referência para o objeto (área de memória) que está no endereço 123x e o método chamado armazena o valor recebido no atributo nome desse objeto, o atributo nome que será alterado é o existente nessa área de memória (objeto) que c referencia.

Vamos revisar essa chamada de método setNome(“Ana”). A mesma explicação vale para os demais métodos set…( ). Todo método set…( ) implementado na classe Cliente espera receber um parâmetro. O método setNome($nome) espera receber um valor (parâmetro) que será armazenado na variável local do método chamada $nome. Por isso que, ao chamar esse método da classe UsaCliente, devemos passar um valor (parâmetro) para o método. No caso, “Ana” será armazenado na variável $nome e logo em seguida será armazenado no atributo nome do objeto $c.

O estado do objeto em memória fica assim:

Linhas 5 a 6: o mesmo se repete para as linhas 5 a 6.

Linha 8: nas linhas anteriores os atributos do objeto $c foram todos preenchidos através da chamada dos métodos ou comportamentos set….( ). Agora queremos acessar, recuperar o valor de algum dos atributos do objeto $c. Nessa linha, estamos mandando imprimir o conteúdo do atributo nome do objeto c. Para isso, chamamos o comportamento ou método desse objeto chamado getNome(). Como $c faz referência para uma área de memória onde o objeto se encontra, o que será impresso é o valor do atributo nome desse objeto. Todo o objeto (área de memória), para existir, deve estar associado a uma variável que armazene a sua referência (endereço da área de memória do objeto). Pode-se chamar essa variável de “referência”. No exemplo acima foi criada uma referência para um objeto do tipo Cliente.

Refinando a criação de uma Classe

Nas duas seções anteriores você aprendeu a utilizar (usar) uma classe criando objetos a partir dela. Foi desenvolvido um programa que cria e manipula 1 objeto do tipo Cliente.

Normalmente, os programas que você fará irão criar e manipular muitos objetos. Antes disso, porém, você deve aprender mais alguns conceitos importantes relacionados ao desenvolvimento de uma classe.

Você já sabe o que é uma classe, pois, já implementou e utilizou uma para criar objetos. Contudo, existem mais conceitos relacionados à criação de classes. Agora, com um conhecimento um pouco mais maduro, você será apresentado a eles. Para isso, você deve voltar à unidade anterior, mais especificamente onde a classe Cliente foi implementada. O primeiro conceito importante que vamos rever é de método construtor de uma classe.

Método Construtor

Quando um objeto é criado ou instanciado (alocado na memória através do operador new), um método definido na classe desse objeto sempre é automaticamente chamado, esse método é designado de construtor.

Esse método deve (não é obrigatório) ser definido na classe do objeto instanciado da seguinte forma:

  1. function__construct() {
  2. $this->nome = "";
  3. $this->endereco = "";
  4. $this->cpf = "";
  5. }

Quando o método construtor é chamado, o código que está dentro do método, é executado, portanto, devemos programar dentro de método construtor, qualquer instrução que queiramos que seja executada quando um objeto é criado. Normalmente, é programado dentro de um método construtor para que os atributos do objeto que está sendo criado sejam inicializados, ou seja, tenham valores consistentes (corretos).

É comum o desenvolvimento de um método construtor que esteja preparado para receber parâmetros ou não, conforme o código a seguir:

  1. function __construct($nome = "", $endereco = "", $cpf = "") {
  2. $this->nome = $nome;
  3. $this->endereco = $endereco;
  4. $this->cpf = $cpf;
  5. }

Observe que o método construtor aguarda 3 parâmetros ($nome, $endereco e $cpf), mas possui valores padrão (vazio, “”) para eles. Caso estes valores não sejam enviados, eles são definidos como vazio (“”). Desta forma, o objeto pode ser instanciado das seguintes formas:

  1. $c = new Cliente();
  2. $c2 = new Cliente("Thiago", "Meu endereço", "123456789");

Para entender melhor, observe o código a seguir:

  1. $cliente1 = new Cliente();
  2. $cliente2 = new Cliente("Carlos", "Rua C", "123552244");

Após a execução da linha 1, o objeto $cliente1 representado em memória possui o seguinte estado:

O segundo objeto cliente ($cliente2) está sendo criado e o método construtor com parâmetros Cliente (“Carlos”, “Rua C”, “123552244” ) está sendo chamado. Cada valor (parâmetro) passado para o método é armazenado na respectiva variável de memória. Por exemplo: “Carlos”, será armazenado na variável de memória do método chamada $nome; “Rua C”, será armazenado na variável de memória do método chamada $endereco; o mesmo acontece com o valor “123552244”, que será armazenado na variável $cpf.

Os valores passados serão armazenados, respectivamente, nessas variáveis de memória e, logo após, o conteúdo dessas variáveis será armazenado (atribuído) aos atributos do objeto que está sendo criado.

Portanto, esse método construtor tem o objetivo de armazenar nos atributos do objeto, valores que são passados como parâmetro para o método. Nesse momento, o objeto representado em memória possui o seguinte estado:

Observe que, ao criar o segundo objeto e chamar o método construtor com parâmetros, os atributos nome, endereço e cpf já possuem valores e não precisam mais ser modificados através dos comportamentos ou métodos setNome(), setEndereco(), etc., como terá que acontecer com o objeto $cliente1, nas linhas seguintes.

Importante!

Quando nenhum método construtor é especificado na classe, um construtor padrão é chamado automaticamente e inicializa atributos automaticamente. Outro conceito importante que vamos detalhar é o de métodos modificadores (set) e recuperadores (get) de uma classe.

Métodos modificadores(set) e recuperadores(get)

Você implementou na classe Cliente uma série de métodos ou comportamentos para alterar o valor dos atributos de um objeto (métodos chamados altera…( ) ) e para recuperar o valor desses atributos (métodos chamados fornece…( ) ). É importante você saber, e isso ficará mais claro na seção seguinte, que os atributos de um objeto só devem ser manipulados via comportamento ou métodos desse objeto e, nunca diretamente, como no exemplo:

  1. $cliente1->nome = "Ana";

Essa instrução está tentando armazenar no atributo nome, do objeto $cliente1, o nome “Ana”. Está se tentando acessar o atributo diretamente e, não através de um método ou comportamento desse objeto. Isso não deve feito e, nem ao menos funcionará, pois, os atributos da classe Cliente estão com a palavra private. Veremos com mais detalhes o significado e impacto dessa palavra nos atributos de uma classe mais tarde, por enquanto, é suficiente dizer que é essa palavra que impede que qualquer atributo de um

objeto seja acessado diretamente em outra classe (a linha acima estaria na classe UsaCliente), como no exemplo acima. Portanto, para alterar o valor do atributo nome, só nos resta chamar o método setNome(“Ana”) passando o nome “Ana” como parâmetro. Isso só é possível porque todos os métodos implementados na classe Cliente têm a palavra public (isso também será explicado mais tarde).

Essa questão será revisada na próxima seção. O que nos interessa nesse momento está relacionado ao nome dos métodos ou comportamentos implementados na classe Cliente. Na versão implementada da classe Cliente todos os métodos que alteram o valor dos atributos são chamados de set…( ). Esse nome foi utilizado para facilitar o entendimento da necessidade de existência desses métodos, o mesmo valendo para os métodos get..( ) que recuperam o valor dos atributos de um objeto.

O objetivo desse tópico é informar que existe um padrão de nomenclatura para nomes de métodos, classes e atributos.

Em relação aos métodos de uma classe, sempre que um método tem a função única e exclusiva de alterar (modificar) o atributo de uma classe ele deve começar com o a palavra set seguido do nome do atributo que ele altera.

O mesmo acontece com os métodos que tem a função de fornecer ou recuperar o valor dos atributos de um objeto, os métodos get…( ). Esses métodos devem começar com a palavra get seguido do nome do atributo que ele recupera.

Métodos set são denominados métodos modificadores porque modificam o valor dos atributos. Métodos get são denominados métodos recuperadores porque recuperam o valor dos atributos.

Gostaria de lembrar que a nomenclatura get e set não é obrigatória, é um padrão considerado como boa prática usada pela maioria dos programadores.

Dúvidas ou sugestões, sintam-se à vontade para comentar 😉 Um abraço!

, ,

Nenhum comentário.

Enquete: Qual é o sistema operacional do seu celular?

E aí pessoal?

Gostaria de pedir-lhes que respondam a enquete ao lado sobre o sistema operacional do seu celular. Pode ser? É bem rapidinho 😉

Em breve divulgarei os resultados!

Um abraço e agradeço!

Nenhum comentário.

Info Exame lança blog sobre Android

Pessoal, acabei de conhecer um blog que a Info Exame lançou sobre Android. Vale a pena conhecer: http://info.abril.com.br/noticias/blogs/droids/

Um abraço!

Nenhum comentário.

Aplicações no Android? App Brain!

O App Brain é um daqueles softwares indispensáveis pros geeks que usam o Android. Ele permite que você gerencie as aplicações do seu celular pelo browser, realizando novas instalações, desinstalando aplicações e compartilhando sua opinião sobre elas na comunidade. Com o App Brain também é possível alterar o papel de parede do seu Android pelo site.

O App Brain disponibiliza pra você a lista das apps mais populares e também monta uma lista de todas as apps instaladas no seu Android para que você compartilhe com seus amigos. Eu inclusive já montem a minha, que virou uma página aqui do blog (clique aqui para visualizar minha lista de apps). Também é possível adicionar amigos, numa espécie de rede social de aplicações.

Enfim, vale a pena conhecer! Espero que gostem…

Um abraço!

,

Nenhum comentário.

O poder do Foursquare

Boa tarde!

Ontem “descobri” este “brinquedinho novo”, o Foursquare. Já tinha dado uma olhada antes, mas até então o Foursquare era para mim um “negocinho que dizia aos meus amigos onde eu estava”, mas ontem parei para dar uma atenção melhor e tentar descobrir o motivo de tantas pessoas fazerem parte desta rede social.

Esta é a definição do Foursquare na Wikipedia:
“Foursquare é uma rede social e de microblogging que permite ao utilizador indicar onde se encontra e procurar por contactos seus que estejam próximo desse local. O aspecto lúdico vem do facto de ser possível acumular distintivos relativos a lugares específicos, um pouco como os autocolantes dos anos 70.

É uma definição interessante, mas para mim é muito mais que isso. Quantos de vocês já foram a um estabelecimento comercial (restaurantes, lojas, cinemas, shoppings ou qualquer outra coisa) e ficaram tão satisfeitos com o atendimento ou tão irritados que ficaram com vontade de colocar um anúncio no jornal para falar da sua indignação? Pois é, o Foursquare te dá a possibilidade de dar sua opinião ou comentário sobre o lugar onde você está, sendo ela positiva ou negativa.

Para saber mais sobre a utilização do Foursquare, leia este artigo do G1 Tecnologia, pois não vou entrar em detalhes técnicos. Este artigo tirou todas as minhas dúvidas!

O Foursquare está disponível para as plataformas Android, Blackberry, Iphone e Palm. Me parece que a versão pro Symbian ja está quase saindo…

Enfim, convido-o a conhecer o Foursquare se você também é da “geração conectada” e curte “softwares colaborativos” e redes sociais.

htp://www.foursquare.com

Um abraço!

,

Nenhum comentário.