O que de fato é o Composer?

logo-composer-transparentVamos entender um pouco o que realmente é o Composer e qual sua utilidade! Inclusive porque todos os frameworks atuais estão utilizando esse tal de Composer.

O Composer nada mais é que um instalador de dependências!

Mas espera, como assim dependências? Que raios são dependências?

Um framework é uma série de lib’s(Library ou bibliotecas de códigos) com ferramentas e camadas de abstrações no qual você pode se utilizar para aumentar a segurança, facilidade de manutenção, velocidade de desenvolvimento e homogenização do seu aplicativo.

Tá, mas e o que o Composer tem haver com isso?

Atualmente os frameworks web cresceram muito, então as suas lib’s acabam ficando pesadas e elas são atualizadas constantemente. Pensando nisso o Composer é uma ferramenta na qual você instala e atualiza lib’s de um determinado framework ou ferramenta.

Vamos agora trazer essa ideia de dependências para o Laravel 4.

Para iniciar um desenvolvimento você não precisa baixar o Laravel 4 inteiro, com todas as lib’s. Basta apenas baixar a estrutura de arquivos padrão e iniciar seu desenvolvimento, quando for necessário interpretar/compilar o código para ver o resultado então você baixa as lib’s do Laravel usando o Composer porque elas são necessárias para interpretação/compilação do código.

Para fazer isso tudo o Composer se utiliza de um arquivo ‘.json‘ no qual ele verifica quais lib’s devem ser instaladas ou atualizadas.

Podemos por exemplo ver o Composer.phar ou Composer.php na pasta raiz de muitos frameworks. Então para você instalar as lib’s deste framework sabendo que ele usa o Composer basta mandar o comando no terminal:

1
php Composer.php install

Para atualizar o próprio composer:

1
php Composer.php self-update

Caso existam atualizações no seu framework e você gostaria de atualiza-lo (Lembrando que você precisa ter instalado ele primeiro):

1
php Composer.php update

Mas e se uso Windows? Como vou fazer para interpretar/compilar esse arquivo do Composer? Bom meu amigo, você deve instalar o PHP no seu Windows e configura-lo para chamar a função de interpretação/compilação no prompt de comando do Windows!

Para quem usa Windows isso fica bem difícil mesmo, então indico instalarem uma VMWare (VMWare Player é FREE) com o Linux!

Fonte: Laravel Brasil

 

Anúncios

Conceitos Básicos de OOP: Polimorfismo

Neste post, vamos dar continuidade ao post: Conceitos Básicos de OOP: Herança, Subclasse, Superclasse, Compartilhamento e Cancelamento.

Polimorfismo

Polimorfismo

Polimorfismo

A palavra polimorfismo significa muitas formas, e representa o fato de uma determinada característica (potência do motor do veículo) ser diferente para cada filho (tipo de veículo). Quem já andou de Volks e de Mercedes sabe bem a diferença.

Na natureza o conceito de polimorsmo é inerente ao processo de desenvolvimento, os seres evoluem e se modificam.

Exemplo:

  • Num programa de simulação numérica pode-se ter a evolução dos métodos de integração numérica. Do método do Trapézio para o método de Simpson e para o método de Gauss.

Em suma, estamos partindo de um objeto mais simples e evoluindo. Mas os conceitos do objeto pai continuam a existir nos objetos descendentes, mesmo que tenham sofrido modificações, aperfeiçoamentos e assumido novas formas (polimorfismo).

O conceito de polimorfismo é fundamental para a análise orientada a objeto; sua aplicação se fundamenta no uso de uma superclasse, através do qual vamos desenvolver nossa hierarquia de classes.

Sinergia

Os conceitos da análise orientada a objetos apresentam um efeito de sinergia (soma de qualidades), em que a soma dos diversos conceitos da AOO implicam num resultado mais positivo que o esperado.

Referencial Bibliográfico:

BUENO, André Duarte – www.lmpt.ufsc.br – Apostila de Programação em C++.[acessado: 02/10/2013 às 13:36]

Conceitos Básicos de OOP: Herança, Subclasse, Superclasse, Compartilhamento e Cancelamento

Neste post, vamos dar continuidade ao post: Conceitos Básicos de OOP: Atributos, Métodos.

Herança (Hereditariedade)

Heranca

Heranca

A herança esta relacionada às hierarquias e as relações entre os objetos.

No dia a dia, quando se fala de herança se refere à transferência de propriedades de um pai aos seus filhos, ou seja, aquilo que é do pai passa a ser do filho.

É comum ainda o dito popular “puxou o pai”, que significa que o filho tem as mesmas características do pai. De uma maneira geral as pessoas sabem que o filho puxou o pai mas não é ele, ou seja não são a mesma pessoa. E que o filho apresenta determinadas características diferentes de seu pai.

Na análise orientada a objetos, herança é o mecanismo em que uma classe filha compartilha automaticamente todos os métodos e atributos de sua classe pai.

A herança permite implementar classes descendentes implementando os métodos e atributos que se diferenciam da classe pai.

Herança é a propriedade de podermos criar classes que se ampliam a partir de definições básicas. De classes mais simples e genéricas para classes mais complexas e específicas.

Exemplo:

  • Um Pentium III tem todas as características do Pentium preservadas, mas acrescentou mais memória cache, a memória cache já existia mas foi ampliada.
  • Uma placa mãe nova apresenta a interface USB, é uma novidade que antes não existia.

Herança simples

Quando uma classe herda as propriedades de uma única classe pai.

Exemplo:

  • Herança genética, um menino herda as características genéticas de seus pais.

Herança múltipla

A herança múltipla ocorre quando uma classe tem mais de um pai.

Exemplo:

  • Herança de comportamento, muitas vezes dizemos que um menino herdou o seu jeito engraçado do tio e estudioso do pai.

Nomes de classe

Numa família os filhos e netos compartilham os nomes de seus ancestrais, da mesma forma, em uma hierarquia de classes os nomes devem ser significativos, semelhantes e esclarecedores.

Superclasse

Uma superclasse é a classe base de uma hierarquia de classes, é a classe mais alta na hierarquia (é a origem da árvore).

Compartilhamento

As técnicas orientadas a objetos facilitam o compartilhamento de código através dos conceitos de herança. Além de um maior compartilhamento do código a análise orientada a objetos reduz a codificação em função da maior clareza dos diagramas desenvolvidos.

Cancelamento

É a substituição de um método da classe pai por outra na classe filho, podendo ocorrer com os seguintes objetivos: cancelamento para extensão (ampliação das tarefas que eram realizadas), cancelamento para restrição (quando a tarefa não é mais necessária), cancelamento para otimização (quando se deseja aumentar a performance). Cancelamento por conveniência (quando o cancelamento pode ser conveniente por um motivo qualquer, deve ser evitada, pois é semanticamente errado). Os métodos não podem ser substituídos para terem um comportamento diferente do esperado.

Leia a continuação

Referencial Bibliográfico:

BUENO, André Duarte – www.lmpt.ufsc.br – Apostila de Programação em C++.[acessado: 02/10/2013 às 13:36]

Conceitos Básicos de OOP: Atributos, Métodos

Neste post, vamos dar continuidade ao post: Conceitos Básicos de OOP: Classes, Tipificação, Modularidade e Encapsulamento

Atributos (Propriedades/Variáveis)

Atributos e Métodos

Atributos e Métodos

A todo objeto podemos relacionar alguns atributos (propriedades). No exemplo do relógio a hora, a data. Na programação orientada a objeto, os atributos são definidos na classe e armazenados de forma individual ou coletiva pelos objetos.

Atributos de classe (coletivos)

Quando um atributo é dividido entre todos os objetos criados, ele é armazenado na classe.

Exemplo: Um contador de relógios criados.

Atributos de objeto (individuais)

Quando um atributo é individual ele é armazenado no objeto.

Exemplo: A hora de um relógio.

Cada relógio tem uma hora, que pode ou não estar certa.

Métodos (Serviços/Funções)

A todo objeto podemos relacionar determinados comportamentos, ações e reações.

As ações ou comportamento dos objetos são chamadas na análise orientada a objetos de métodos, assim, um método é uma função, um serviço fornecido pelo objeto.

Os comportamentos dos objetos são definidos na classe através dos métodos e servem para manipular e alterar os atributos do objeto (alteram o estado do objeto).

Exemplos:

  • Um automóvel tem o comportamento de se locomover.
  • Um computador de processar programas.
  • Uma edificação de dar abrigo.
  • Um meio poroso de permitir o fluxo de massa.
  • Um equipamento de medição de realizar medidas.
  • Uma método de conversão de uma imagem colorida em tons de cinza altera o estado da imagem, convertendo cada píxel colorido em um píxel cinza.

Mensagens

Foi falado que um objeto tem determinados atributos (propriedades) e métodos

(ações), e que o objeto reage ao meio que o envolve de acordo com as excitações que sofre.

Em um programa orientado a objetos as excitações são representadas por mensagens que são enviadas a um objeto. Uma mensagem pode ser gerada pelo usuário, por exemplo, ao clicar o mouse.

Protocolo

O protocolo é o conjunto de métodos que podem ser acessados pelo usuário, o conjunto de mensagens a que o objeto responde. Ou seja, o protocolo é o conjunto de métodos públicos da classe.

Ligação estática/dinâmica

Ligação é o processo de identificar a posição dos métodos a serem executados. Na ligação estática o endereço dos métodos é definido durante a compilação do programa. Na ligação dinâmica o endereço dos métodos é definido somente durante a execução do programa.

Leia a continuação

Referencial Bibliográfico:

BUENO, André Duarte – www.lmpt.ufsc.br – Apostila de Programação em C++.[acessado: 02/10/2013 às 13:36]

Conceitos Básicos de OOP: Classes, Tipificação, Modularidade e Encapsulamento

Neste post, vamos dar continuidade ao post Conceitos Básicos de OOP: Abstração, Objeto, Identidade, Persistência.

Classes

Classe Cachorro

Classe Cachorro

Quando falamos de classes, lembramos-nos de classes sociais, de classes de animais (os vertebrados), de classes de objetos da natureza, de hierarquias. Ou seja, uma classe descreve um grupo de objetos com os mesmo atributos e comportamentos, além dos mesmos relacionamentos com outros objetos.

Para a análise orientada a objeto, uma classe é um conjunto de códigos de programação que incluem a definição dos atributos e dos métodos necessários para a criação de um ou mais objetos.

A classe contém toda a descrição da forma do objeto, é um molde para a criação do objeto, é uma matriz geradora de objetos, é uma fábrica de objetos. Uma classe também é um tipo definido pelo usuário.

Classificação

Os objetos com a mesma estrutura de dados e com as mesmas operações são agrupados em uma classe. Um objeto contém uma referência implícita a sua classe, ele sabe a qual classe pertence.

Tipificação

As classes representam os tipos de dados definidos pelo usuário. A tipificação é a capacidade do sistema distinguir as diferentes classes e resolver as conversões.

Modularidade

A criação de módulos do programa que podem ser compilados separadamente. É usual separar a definição das classes de sua implementação.

Classes abstratas

Uma classe é abstrata quando a mesma não é completa e não pode criar objetos (é como uma fábrica no papel). Uma classe abstrata pode surgir naturalmente ou através da migração de atributos e métodos para uma classe genérica. Somente classes concretas podem criar objetos.

Encapsulamento

Todos os equipamentos que utilizamos são altamente encapsulados. Tome como exemplo a sua televisão, ela tem um pequeno conjunto de botões que lhe permitem manipular os atributos do objeto televisor que são de seu interesse, como o canal, o volume, as cores.

Mas você sabe que o funcionamento do objeto televisor é extremamente complexo e que ao selecionar um novo canal, uma série de atributos internos são processados e alterados. Os atributos e funções internas estão encapsuladas, escondidas de você.

Para a análise orientada a objeto, encapsulamento é o ato de esconder do usuário informações que não são de seu interesse. O objeto atua como uma caixa preta, que realiza determinada operação, mas o usuário não sabe, e não precisa saber, exatamente como. Ou seja, o encapsulamento envolve a separação dos elementos visíveis de um objeto dos invisíveis.

A vantagem do encapsulamento surge quando ocorre a necessidade de se modificar um programa existente. Por exemplo, você pode modificar todas as operações invisíveis de um objeto para melhorar o desempenho do mesmo sem se preocupar com o resto do programa. Como estes métodos não são acessíveis ao resto do sistema, eles podem ser modificados sem causar efeitos colaterais.

Exemplos:

  1. Um computador é um o objeto extremamente complexo, mas para o usuário o que importa é o teclado, o monitor, o mouse e o gabinete.
  2. Ao utilizar um software como o StarOffice, a forma de uso é a mesma, seja num Pentium I I-MMX ou num AMD K6. Os elementos invisíveis do computador (placa mãe, processador, memória) não alteram o uso do programa.
  3. As propriedades físicas de um determinado material de construção (telha) e os métodos de cálculo de suas propriedades (resistência à compressão, condutividade térmica…). Aqui, a telha é o objeto, as propriedades são seus atributos e o cálculo de suas propriedades são os métodos. Para o usuário o que interessa são as propriedades conhecidas, não interessa as equações, as variáveis intermediárias e a forma de cálculo, isto fica escondido.
  4. Num programa que calcule a área da curva normal, o calculo interno pode ser realizado por um polinômio que aproxima a área ou através da integração numérica da equação da normal. A decisão de qual método de calculo vai ser utilizado é realizada pelo objeto TNormal em função de um atributo interno o “limiteErro”. O usuário externo cria o objeto TNormal informa o limite de erro e solicita o calculo da área. O usuário não sabe qual método de calculo vai ser utilizado, isto fica escondido.

Leia a continuação

Referencial Bibliográfico:

BUENO, André Duarte – www.lmpt.ufsc.br – Apostila de Programação em C++.[acessado: 02/10/2013 às 13:36]

Conceitos Básicos de OOP: Abstração, Objeto, Identidade, Persistência

Orientação a Objetos

Orientação a Objetos

Neste post, vamos descrever cada mecanismo da programação orientada a objeto dando uma visão que você já conhece e uma visão associada à programação.

A Análise Orientada a Objeto (AOO) tem uma série de conceitos que auxiliam as pessoas a delinear claramente o problema e a identificar os objetos e seus relacionamentos.

Descreve-se a seguir os conceitos básicos da análise orientada a objeto, isto é, a abstração, o objeto, as classes, os atributos, os métodos, as heranças e o polimorfismo.

Abstração

No dicionário Aurélio, abstração significa considerar isoladamente coisas que estão unidas, ou seja, partimos do enfoque global de um determinado problema e procuramos separar os elementos fundamentais e colocá-los de uma forma mais próxima da solução. A ideia da  abstração é identificar os elementos essenciais de um problema e suas propriedades fundamentais, separando ocorrências e atributos acidentais.

Para a análise orientada a objeto, abstração é o processo de identificação dos objetos e seus relacionamentos. A análise orientada a objeto permite ao programador concentrar-se no que um objeto é e faz sem se preocupar em como ele o faz. A abstração se dá em diferentes níveis: inicialmente abstrai-se o objeto; de um conjunto de objetos cria-se um conjunto de classes relacionadas, de um conjunto de classes cria-se uma biblioteca de classes.

Objeto (ou Instância)

Objetos são coisas do mundo real ou imaginário, que podemos de alguma forma identificar, como uma pedra, uma caneta, um copo, uma fada.

Um objeto tem determinadas propriedades que o caracterizam, e que são armazenadas no próprio objeto. As propriedades de um objeto são chamadas ainda de atributos.

O objeto interage com o meio e em função de excitações que sofre, realiza determinadas ações que alteram o seu estado (seus atributos). Os atributos de um objeto não são estáticos, eles sofrem alterações com o tempo.

Para a POO, um objeto é uma entidade única que reúne atributos e métodos, ou seja, reúne as propriedades do objeto e as reações as excitações que sofre.

Quando temos uma instância de uma classe, nós temos um objeto desta classe. Instância é um outro nome que se dá ao objeto, geralmente se refere a um objeto específico.

Identidade

A identidade é uma propriedade que permite identificar univocamente um objeto. Os objetos se distinguem por sua própria existência, independente de seu conteúdo. Dois objetos são distintos mesmo que todos os seus atributos sejam iguais, ou seja, existe um único identificador para cada objeto.

Persistência

É o tempo de vida de um objeto, podendo ser temporário ou permanente. Temporário quando só existe durante a execução do programa. Permanente quando é armazenado em um meio físico como a winchester. A vantagem dos objetos persistentes é que os mesmos podem ser acessados por mais de um programa, ou pelo mesmo programa em uma outra data, ou como um depósito de dados (banco de dados). 

Leia a continuação

Referencial Bibliográfico:

BUENO, André Duarte – www.lmpt.ufsc.br – Apostila de Programação em C++.[acessado: 02/10/2013 às 13:36]