Archive for junho de 2010

Remake de Doom com uma nova arma: Vuvuzela

Creio que 95% dos leitores deste blog já jogaram Doom (pelo menos os que tiverem mais do que uns 22 anos de idade). Então curtam esse remake com uma nova “super arma”…

,

Nenhum comentário.

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

Ver Tutorial Series: Orientação a objetos utilizando PHP

Introdução a orientação a objetos

Um pouco de história

O conceito de programação orientada a objeto não é algo novo. No final da década de 60, a linguagem Simula67, desenvolvida na Noruega, introduzia conceitos hoje encontrados nas linguagens orientadas a objetos. Em meados de 1970, o Centro de Pesquisa da Xerox (PARC) desenvolveu a linguagem Smalltalk, a primeira totalmente orientada a objetos. No início da década de 80, a AT&T lançou a Linguagem C++, uma evolução da linguagem de programação C em direção à orientação a objetos. Atualmente, um grande número de linguagens incorpora características de orientação a objeto, tais como Java, Object Pascal, Python , PHP etc.

Conceitos básicos

O paradigma de programação orientada a objeto é baseado em alguns conceitos que definem uma forma de criar programas para computadores.

A filosofia principal desse paradigma de programação é solucionar um problema (via programação) através da representação computacional dos objetos existentes nesse problema (objetos do mundo real), usando para isso os conceitos mencionados acima. Com isso, essa maneira de se desenvolver programas fica mais próxima das situações, dos problemas como eles acontecem no mundo real. Será um pouco difícil entender todas as vantagens de OO (Orientação a Objetos). Agora, portanto, vamos mencionar apenas duas:

– É mais fácil conversar com o cliente que pediu o software se falarmos com objetos que existem no mundo dele (o mundo do software fica mais perto do mundo real).

– O software feito com OO pode ser feito com maior qualidade e pode ser mais fácil de escrever e, principalmente, alterar no futuro.

O nosso mundo está repleto de objetos, sejam eles concretos ou abstratos. Qualquer tipo de objeto possui atributos (características) e comportamentos que são inerentes a esses objetos.

Exemplos de objetos CONCRETOS:

1) Caneta

Atributos de qualquer Caneta:

– Altura
– Espessura
– Cor

Nesse caso, o nosso objeto Caneta tem os seguintes dados em cada característica:

– Altura: 10 cm
– Espessura: 2 cm
– Cor: rosa

Comportamentos

– Desenhar
– Escrever
– Etc.

2) Pessoa

Atributos de qualquer Pessoa:

– Altura
– Peso
– Idade

Nesse caso, o nosso objeto Pessoa tem os seguintes dados em cada característica:

– Altura: 1,80
– Peso: 70
– Idade: 25

Comportamentos de qualquer Pessoa:

– Andar
– Sorrir
– Ler
– Etc.

Exemplos de objetos que NÃO SÃO CONCRETOS:

1) Retângulo

Atributos de qualquer retângulo:

– Base
– Altura

Nesse caso, o nosso objeto retângulo tem os seguintes dados em cada característica:

– Base: 10
– Altura: 5

Comportamentos de qualquer Retangulo

– Calcular área
– Calcular perímetro
– Etc.

2) Disciplina

Atributos de qualquer Disciplina:

– Código da disciplina
– Nome da disciplina

Nesse caso, o nosso objeto Disciplina tem os seguintes dados em cada característica:

– Código da disciplina: 1
– Nome da disciplina: Álgebra Linear

Comportamentos de qualquer Disciplina

– Listar o nome da disciplina
– Etc.

Para usar objetos na programação, primeiro precisamos distinguir entre um objeto real e a representação de um objeto. No desenvolvimento de programas, sempre trabalhamos com representações de objetos. Essa representação precisa refletir os objetos reais, ou seja, objetos existentes no problema do mundo real que queremos solucionar. Por exemplo, um sistema de conta corrente não manipula diretamente os clientes, contas e cheques (esses são os objetos reais do problema).

Em vez disso, o software deve criar representações desses objetos, com os mesmos atributos e comportamentos dos objetos do mundo real. Essa representação é chamada de ABSTRAÇÃO.

Para entender isso, vamos voltar ao exemplo do sistema de conta corrente.

No mundo real existem vários objetos Cliente, vários objetos Conta e vários objetos Agência (pode ser somente um), ou seja, muito provavelmente não existirá somente um cliente, uma conta e uma agência.

Todos os objetos cliente possuem o mesmo conjunto de atributos, por exemplo, todos os objetos cliente possuem nome e endereço, assim como todos os objetos conta possuem um número, um saldo, um histórico de transações e todos os objetos agência possui um número e um nome.

Assim como os atributos, todos os objetos de um mesmo tipo compartilham do mesmo conjunto de comportamentos, por exemplo, todos os objetos Cliente fazem depósitos e saques.

Apesar de cada objeto ter o mesmo conjunto de atributos, cada objeto possui valores próprios para cada atributo, ou seja, cada objeto é único.

Essa explicação para objetos do mundo real vale para quando trabalhamos com a representação desses objetos no contexto de desenvolvimento desse sistema (programação).

Portanto, podemos perceber que o sistema de conta corrente (programa de conta corrente) será composto de vários objetos, cada qual com um conjunto de atributos e comportamento em comum (se forem do mesmo tipo) e com valores próprios nos seus atributos. A figura abaixo ilustra os vários objetos cliente, conta e agência.

O termo instância é freqüentemente usado para descrever um objeto com valores próprios em seus atributos. Por exemplo, observe a figura acima:

– Ana é uma instância de Cliente
– 9916 é uma instância de Conta

Todo objeto deve ter:

– Estado
– Comportamento
– Identidade

1) Estado

É representado pelos valores dos atributos de um objeto em um determinado instante do tempo. O estado do objeto usualmente muda ao longo da existência do objeto.

2) Comportamento

Determina como um objeto age e reage: suas modificações de estado e interações com outros objetos.

O comportamento é determinado pelo conjunto de operações ou métodos que o objeto pode realizar. Operações ou métodos são algo que você pede para o objeto fazer, como fazer um depósito (comportamento de qualquer objeto do tipo Conta).

Fazer depósito é um comportamento de qualquer objeto do tipo Conta e não de qualquer objeto do tipo Cliente, como você deve ter pensado a princípio.

Isso acontece porque há diferenças grandes quando pensamos no comportamento de representações de objetos, ou seja, objetos do mundo do software.

Ao identificar comportamentos de objetos do mundo do software devemos levar em conta os seguintes princípios:

– Primeiro princípio: não vamos modelar todo o comportamento dos objetos. Exemplo: Clientes tomam café no mundo real, mas provavelmente não no software.

– Segundo princípio: os comportamentos freqüentemente são assumidos por objetos diferentes. Exemplo: No mundo real, quem faz um depósito? Um Cliente.

No software, quais objetos assumiriam a responsabilidade de fazer um depósito? Objetos do tipo Conta.

A primeira grande regra de programação Orientada a Objeto é a seguinte:

“Comportamentos são associados aos objetos que possuem os atributos afetados pelo comportamento”.

Um depósito afeta duas coisas, do ponto de vista de um sistema bancário:

– O saldo de uma conta.

– O histórico de transações feitas a uma conta.

Como se pode ver, o depósito afeta apenas atributos de uma Conta. Portanto, esse comportamento está associado à Conta e não ao Cliente, embora, no mundo físico, seja o Cliente que faz o depósito.

Outros comportamentos associados aos objetos do tipo Conta:

– Fazer um saque, informar seu saldo, etc.

3) Identidade

Refere-se à identificação do objeto. Como cada objeto é único, ou seja, tem seus próprios valores nos atributos, ele deve ser identificado por algum nome. Mesmo que seu estado seja idêntico ao de outro objeto ele tem identificação própria.

A identificação do objeto do tipo Agência mostrado na figura abaixo é Centro. Esse objeto poderia ter qualquer nome identificando-o.

Agora você já sabe que qualquer programa orientado a objeto deve trabalhar com representações de objetos que reflitam as características e comportamento de objetos do mundo real e já aprendeu os principais conceitos relacionados a objetos.

No sistema de conta corrente foram identificados, a princípio, 3 tipos ou grupos de objetos: Cliente, Agência e Conta.

Sabemos que poderão existir vários objetos de cada um desses tipos e todos eles irão possuir o mesmo conjunto de atributos e comportamentos do seu tipo.

Para criar uma representação de cada objeto dentro do programa, devemos antes criar uma estrutura, uma espécie de molde ou template que represente os atributos e comportamentos do tipo do objeto.Essa estrutura é chamada de classe.

Portanto, devemos ter uma classe Cliente, uma classe Agência e uma classe Conta.

É a partir dessa estrutura conhecida como classe que iremos criar as representações de objetos que precisamos para desenvolver o programa, ou seja, precisamos criar a estrutura (classe) apenas uma vez e, a partir dela, serão criadas as representações dos objetos.

Classes e Objetos

Uma classe é a descrição de atributos e comportamentos de um grupo de objetos com propriedades similares (atributos) e comportamento comum (operações ou métodos).

Por representar atributos e comportamento de um determinado tipo de objeto que existe no mundo real, uma classe é uma abstração da realidade, pois nela estão especificados somente parte dos atributos e comportamentos de um objeto do mundo real. Somente parte, porque não são todos os atributos e comportamentos dos objetos do mundo real que interessam ao sistema.

A figura a seguir, ilustra a representação gráfica das classes do sistema de conta corrente. Na primeira parte da figura está o nome da classe, na parte do meio, estão os atributos e, na parte final, está o comportamento (métodos ou operações).

Observe que a classe Conta e Agencia ainda não estão com os comportamentos definidos. Faremos isso na medida que avançarmos nos conceitos de OO.

Um objeto é uma instância de uma classe. Essa instância possui valores próprios em cada atributo definido na classe. As figuras a seguir ilustram a classe Cliente e os vários objetos (instâncias) da classe Cliente.

A notação que estamos utilizando para representar classes e objetos é a utilizada pela UML (Unified Modelling Language) ou Linguagem de Modelagem Unificada. A UML não é uma linguagem de programação e sim, uma linguagem composta de vários diagramas (cada qual com seu conjunto de símbolos gráficos) que expressam como um sistema orientado a objetos deve funcionar. Ela é utilizada nas fases iniciais do desenvolvimento de um software, ou seja, antes da programação propriamente dita, com o objetivo de especificar e documentar o funcionamento do sistema. O diagrama que iremos utilizar é o Diagrama de Classes que especifica as classes do sistema e o relacionamento entre elas.

Para finalizar este módulo, uma pequena revisão:

Um programa orientado a objeto é composto por vários objetos do mesmo tipo e de outros tipos que se relacionam. Chamamos esses objetos do mundo do software de representações de objetos. Como num programa muito provavelmente existirão vários objetos do mesmo tipo, devemos criar uma estrutura ou template que represente os atributos e comportamentos desses objetos do mesmo tipo, essa estrutura é chamada de classe. Portanto classe é uma estrutura a partir da qual os objetos (do software) são criados.

Dúvidas? Comentem! Até a próxima!

, ,

2 Comentários

Tutorial Series: Orientação a objetos utilizando PHP

Pessoal, boa tarde!

Vou iniciar (esta semana se possível) uma série de tutoriais sobre orientação a objetos utilizando o PHP. Sempre tive um certo “bloqueio” com orientação a objetos. Se você ainda fica meio perdido na orientação a objetos, esta pode ser uma boa hora pra aprender! Usarei como base um material de EaD muito bom criado pela Andréa Bordin. No material, a linguagem utilizada foi o Java. Meu trabalho será transcrevê-lo para o PHP.

PS: Nos tutoriais irei partir do princípio que você já sabe PHP, mas podem tirar dúvidas à vontade nos comentários.

Iremos começar com um módulo introdutório em breve.

Um abraço!

, ,

2 Comentários

Um vídeo bacana sobre o Linux…

“O futuro é aberto.”


Nenhum comentário.

Caixa filia-se ao consórcio WWW – W3C

Adesão ao World Wide Web Consortium permitirá ao banco ampliar a oferta de serviços baseada na Internet e promover maior acessibilidade dos cidadãos às novas tecnologias.

A Caixa Econômica Federal e o World Wide Web Consortium (W3C) firmaram, hoje(9), em São Paulo (SP), a assinatura de adesão do banco ao consórcio. Com o acordo, a Caixa é a primeira instituição financeira do Brasil a se filiar a esse consórcio internacional de empresas que é voltado ao desenvolvimento de tecnologias visando ao crescimento da Internet em todo o mundo.

A ação foi realizada durante o encontro do CIAB-Febraban com a participação da vice-presidente de Tecnologia da CAIXA, Clarice Copetti, que declarou na ocasião: “A CAIXA possui 49 milhões de clientes, temos um dos sites bancários mais acessados do mundo pela diversidade de serviços que prestamos à população brasileira como habitação, loterias e fundo de garantia e, portanto, precisamos implementar os padrões que ampliem e facilitem acesso a informações e serviços deste banco 100% público”.

Também presente na mesma oportunidade, o gerente do escritório do W3C no Brasil, Vagner Diniz, observou que “a iniciativa da CAIXA, além de proporcionar acesso às novas tecnologias como HTML 5 e CSS 3, também vai inserí-la na discussão internacional em torno de padrões específicos para acesso a dados financeiros na web (XBRL) e para segurança da informação (XML Security)”.

Com a filiação, a CAIXA vai poder se relacionar continuamente com os maiores especialistas do mundo da Web que definem os padrões internacionais. Assim, poderá se antecipar ao mercado na oferta aos seus usuários de sítios na Internet que se caracterizem pela excelência em acessibilidade, independência de navegadores, dispositivos e plataformas operacionais, garantindo dessa forma total interoperabilidade. Trata-se, portanto, de uma iniciativa cujo propósito é proporcionar de fato uma Web para todos.

Além disso, a filiação é de grande relevância para a empresa, já que vem ao encontro de sua política de inovação tecnológica, alinhada às diretrizes do Governo Federal, aderente aos padrões abertos estabelecidos que prevejam a oferta de produtos e serviços com uso intensivo de Tecnologia da Informação e Comunicação.

Fonte: Carlinhos Cecconi (W3C Brasil) por email

W3C Brasil: http://www.w3c.br/

Nenhum comentário.