quinta-feira, 28 de fevereiro de 2013

C++: Como declarar um atributo static

Não quero aprofundar nos conceitos de um método/atributo estático nesse momento, então hoje vou assumir que saibam o que é um método ou atributo estático (o que pode não ser verdade, uma vez que nunca aprendi direito na escola e nem na faculdade).
O motivo de estar fazendo esse tutorial é porque levei um bom tempo para poder entender o que estava acontecendo. Na maioria das linguagens de programação, basta por o modificador static na frente que já é suficiente, mais ou menos como no exemplo abaixo:

Arquivo: A.h
class A{
  static int staticAtr;

  public void metodo();
}

quarta-feira, 27 de fevereiro de 2013

C++: Entenda os modificadores de Acesso (Public, Protected e Private)

Isso não é só no C++, mas na maiorias das linguagens orientadas ao objeto, sempre nos deparamos com esses três modificadores de acesso: Public, Protected e Private. Eles estão praticamente sempre, nos métodos e nos atributos, mas poucas pessoas sabem o que realmente faz. (Ok, na verdade, poucas pessoas sabem usar as vantagens do Orientado ao Objeto, mas isso fica para outro dia)

Para entender melhor, vamos supor que temos três classes, dessa forma:

domingo, 24 de fevereiro de 2013

C++: Erro de Redefinição de Classe

Estava eu, mexendo com heranças e tal e quando vou compilar o meu código, aparece esse erro: "Redefinition of 'ClasseX'". Achei estranho, porque não declarei duas vezes a classe, como a maioria da Internet que achei, patéticamente fizeram de fazer um definição de classe no arquivo h e outra no arquivo cpp. 

No meu caso, o que ocorreu foi que ao incluir no meu código, uma classe derivada de ClasseX e outra classe também derivada de ClasseX, o compilador incluiu duas vezes a ClasseX e aí é que deu o erro de redefinição.

sábado, 23 de fevereiro de 2013

C++: O que são métodos Virtuais?

Hoje estou fazendo um tutorial de programação de nível intermediário, que são os métodos virtuais. Estou fazendo isso, porque apesar de ser básico da linguagem (mas classifico como intermediário porque são poucas as instituições que explicam métodos virtuais), você não encontra praticamente NADA na internet que explique. Só coisas avançadas como métodos virtuais em heranças múltiplas e tal, mas o básico: NADA. Bem, vamos começar:

Métodos virtuais são métodos que são declaradas em uma classe base, mas serão implementadas nas classes que herdarão a classe base. Imaginemos a seguinte situação: nós vamos implementar uma classe chamada Animal. Todos os animais precisam comer, entretanto, o que eles comem depende de cada animal em particular. Por exemplo, uma Zebra comerá grama, enquanto um Leão comerá carne, mas todos os animais comem. Então, teríamos um diagrama de classe assim:

Todo animal precisa comer, entretanto, como eles comem variam de acordo com a espécie


sexta-feira, 22 de fevereiro de 2013

Cocos2D-x: Como fazer Output na linha de comando

Não importa qual é a linguagem de programação, mas durante o desenvolvimento os comandos ESCREVA sempre facilita o trabalho para um teste de mesa. Com Cocos2D-x não é diferente, só que tem um pequeno problema: projetos para Android são geralmente projetos Java que utiliza código C++, assim como projetos para iOS são códigos Objective-C que utiliza código C++. Embora, mesmo para o XCode tenha uma interface amigável com C++, coisa que o Android não tem (ou acham NDK agradável?), não dá para usar um printf ou cout porque não aparece nada.


quinta-feira, 21 de fevereiro de 2013

iOS: Pastas no XCode: Groups vs Folder Reference

Hoje o assunto é um detalhe do XCode que até agora não teve importância para mim, mas começou a ter. Saber a diferença entre Groups e Folder Reference nos projetos do XCode.

Quando você adiciona um arquivo ou vários ou até mesmo uma estrutura de pastas, você vai lá e clica em "Add files" e uma caixa abre e existe uma parte assim:


Mas qual delas escolher? Vamos por partes e explicar primeiro o que é um grupo:

quarta-feira, 6 de fevereiro de 2013

Cocos2D/Cocos2D-x: Sprites

Vamos começar mais uma série de postagens. Começaremos a falar sobre o framework Cocos2D. Esse framework ficou bastante utilizado agora, na era dos smartphones pois foi o primeiro a ser disponibilizado livre para iOS. Mais tarde, ganhou uma versão C++, conhecido como Cocos2D-x, e como tanto o Android quanto iOS tem suporte para uma implementação em C++, então ganhou a vantagem de ser portável.
Como disse, o conteúdo desse blog é basicamente as minhas pesquisas que faço para ter registro. Estou aprendendo através de um livro de Cocos2D, mas o problema é que a minha necessidade é para Cocos2D-x. Por isso, aqui eu trabalharei com os dois, embora, os códigos tirados para o Cocos2D é tirado diretamente do livro, portanto não garanto que ele funciona. 

Então, vamos começar o primeiro assunto que é: