Mostrando postagens com marcador OrientaçãoaObjetos. Mostrar todas as postagens
Mostrando postagens com marcador OrientaçãoaObjetos. Mostrar todas as postagens

04 maio 2011

Interface (programação)

0 comentários
Em algumas linguagens de programação, o termo interface é uma referência à característica que permite a construção de interfaces que isolam do mundo exterior os detalhes de implementação de um componente de software.

Utilização

Um exemplo clássico de utilização de interfaces é o do sistema operacional que, através de uma interface de programação de aplicativos, permite que os programas utilizem os recursos do sistema (memória, CPU e etc) sem que os seus detalhes de implementação sejam conhecidos do programador. Este esquema isola e protege o sistema operacional de eventuais erros cometidos pela aplicação.
Os componentes de software utilizam interfaces padronizadas para criar uma camada de abstração que facilite a reutilização e a manutenção do software. [3] Neste cenário, a interface de um módulo de software A deve ser mantida em separado da sua implementação e qualquer outro módulo B, que interaja com A (cliente de A), deve ser forçado a fazê-lo apenas através da interface. Este mecanismo permite que no caso de uma alteração em A, o módulo B continue funcionando; desde que a utilização do módulo A pelo módulo B satisfaça as especificações da interface. (Ver também o princípio da substituição de Liskov).
Uma interface disponibiliza tipos variados de acesso entre componentes, como por exemplo: constantes, tipos de dado, procedimentos, especificação de exceções e assinaturas de métodos. Em alguns casos é mais apropriado definir as variáveis como parte das interfaces. As interfaces também especificam a funcionalidade disponibilizada através de comentários ou através de declarações lógicas formais.

Linguagens

O princípio da interface é um alicerce da programação modular que, por sua vez, é precursora e parte da programação orientada a objeto. Na programação orientada a objeto, a interface de um objeto consiste de um conjunto de métodos que um objeto deve suportar. É importante notar que as variáveis de instância não fazem parte da interface de um objeto pois devem ser acessadas somente pelos "métodos de acesso". Historicamente, as interfaces são derivadas dos arquivos de cabeçalho da Linguagem C (normalmente arquivos com extensão ".h") que separam o contexto sintático de um módulo (ou protótipos de funções) da sua implementação.[5]
Algumas linguagens de programação orientadas a objeto exigem que a interface do objeto seja especificada de forma separada da implementação do objeto, enquanto outras não fazem esta exigência. Por exemplo, em linguagens de programação como Objective-C, a classe do objeto define a sua interface e é declarada em um arquivo de cabeçalho (header em inglês) e, por outro lado, a implementação da classe é mantida em um arquivo chamado de "arquivo fonte". Devido à tipagem dinâmica existente na Objective-C, que permite o envio de mensagens para qualquer objeto, a interface de uma classe é importante para determinar para quais métodos um objeto de uma classe responde.
A linguagem de programação Java, que recebeu influência da Objective-C,[6] utiliza outra abordagem para o conceito de interface, assim como outras linguagens orientadas a objeto, onde a interface especifica um conjunto de métodos ou funcionalidades comuns a um conjunto de classes.[7] Ver interface na linguagem Java.
Algumas linguagens de programação como D, Java e Logtalk, por exemplo, permitem a definição de "hierarquias de interfaces". A linguagem Logtalk também suporta a implementação "privada" e "protegida" dos métodos de uma interface.
A linguagem Eiffel inclui na interface de uma classe as pré e pós-condições para execução dos seus métodos. Esta característica é essencial para a metodologia do projeto por contrato, e pode ser entendida como uma extensão das condições impostas pelos tipos dos argumentos. Estas regras podem ser especificadas na implementação da classe ou em uma classe genérica (classe mãe) que não precisa implementar os seus métodos. Elas são extraídas por processadores da linguagem e podem ser vistas em uma ambiente de desenvolvimento além de gerarem verificações em tempo de execução. A linguagem garante que classes derivadas obedeçam aos contratos definidos nas classes que servem de base.
[editar]Suporte à interfaces
Em geral toda linguagem permite a implementação de interfaces. Mas algumas linguagens possuem "construções" específicas para esse fim. Por exemplo:

  • ActionScript in Flash
  • Ada
  • C#
  • D
  • Delphi
  • Eiffel
  • Java 
  • Logtalk
  • Mesa
  • ML
  • Modula
  • Modula-2
  • Modula-3
  • Oberon 
  • Objective-C
  • PHP
  • Python
  • REALbasic
  • Unified Modeling Language
  • Visual Basic

Polimorfismo (programação)

0 comentários
Consiste em quatro propriedades que a linguagem pode ter (atente para o fato de que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo):
  • Universal:
    • Inclusão: um ponteiro para classe mãe pode apontar para uma instância de uma classe filha (exemplo em Java: "List lista = new LinkedList();" (tipo de polimorfismo mais básico que existe)
    • Paramétrico: se restringe ao uso de templates (C++, por exemplo) e generics (Java/C♯)
  • Ad-Hoc:
    • Sobrecarga: duas funções/métodos com o mesmo nome mas assinaturas diferentes
    • Coerção: a linguagem que faz as conversões implicitamente (como por exemplo atribuir um int a um float em C++, isto é aceito mesmo sendo tipos diferentes pois a conversão é feita implicitamente)

03 maio 2011

Abstração (programação)

0 comentários
Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software.
Uma classe abstrata é desenvolvida para representar entidades e conceitos abstratos. A classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo (template) para uma funcionalidade e fornece uma implementação incompleta - a parte genérica dessa funcionalidade - que é compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas, completa a funcionalidade da classe abstrata adicionando um comportamento específico.

Encapsulamento (orientação a objetos)

0 comentários
Encapsulamento vem de encapsular, que em programação orientada a objetos significa separar o programa em partes, o mais isoladas possível. A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações[1][2].
Para exemplificar, podemos pensar em uma dona de casa (usuário) utilizando um liquidificador (sistema). O usuário não necessita conhecer detalhes do funcionamento interno do sistema para poder utilizá-lo, precisa apenas conhecer a interface, no caso, os botões que controlam o liquidificador. Outro exemplo clássico de encapsulamento é o padrão de projeto chamado Mediator.
Uma grande vantagem do encapsulamento é que toda parte encapsulada pode ser modificada sem que os usuários da classe em questão sejam afetados. No exemplo do liquidificador, um técnico poderia substituir o motor do equipamento por um outro totalmente diferente, sem que a dona de casa seja afetada - afinal, ela continuará somente tendo que pressionar o botão.
O encapsulamento protege o acesso direto (referência) aos atributos de uma instância fora da classe onde estes foram declarados. Esta proteção consiste em se usar modificadores de acesso mais restritivos sobre os atributos definidos na classe. Depois devem ser criados métodos para manipular de forma indireta os atributos da classe.
Encapsular atributos também auxilia a garantir que o estado e o comportamento de um objeto se mantenha coeso. Por exemplo, no caso da classe Semaforo poderiamos ter um método de acesso chamado lerCor(), e um modificador chamado proximaCor(). O estado é mantido pois os usuários da classe não podem alterar as cores de um semáforo ao seu bel prazer e, por exemplo, fazer a seguinte troca de cores: vermelho-amarelo-vermelho. É comum usar o padrão get<nomeDoAtributo> para o método que retorna o valor atual do atributo e set<nomeDoAtributo> para o método que modifica o valor de um atributo do objeto, como no exemplo abaixo: setComProtecao e getComProtecao.

Exemplos : 

Os exemplos de encapsulamento a seguir foram feitos usando Java, mas a ideia se aplica à qualquer linguagem orientada a objetos.

//Sem encapsulamento
class NaoEncapsulado {
// implicitamente public
int semProtecao;
}

public class TesteNaoEncapsulado {
public static void main(String[] args) {
NaoEncapsulado ne = new NaoEncapsulado(); // ne é uma instância de NaoEncapsulado
ne.semProtecao = 10; // acesso direto ao atributo
System.out.println("Valor sem proteção: " + ne.semProtecao); // acesso direto aos atributos ou nao estupor
}
}




//Com encapsulamento
class Encapsulado {
// private é um modificador de acesso de restrição máxima
private int comProtecao;

public void setComProtecao(int valor) {
comProtecao = valor;
}

public int getComProtecao() {
return comProtecao;
}
}

public class TesteEncapsulado {
public static void main(String[] args) {
Encapsulado e = new Encapsulado(); // "e" é uma instância de Encapsulado

// acesso direto a um atributo protegido implicará erro de compilação
e.comProtecao = 10;

// deve-se acessar o atributos de forma indireta, encapsulada
e.setComProtecao(10);
System.out.println("Valor com proteção: " + e.getComProtecao());
}
}

02 maio 2011

Associação (programação) orientado a objetos

0 comentários

Uma associação define um relacionamento entre duas classes que permite que um objeto faça com que outro objeto realize uma ação em seu lugar.Em termos gerais, a casualidade da ação é feita ao enviar uma mensagem ou invocar um método do objeto controlado

Herança (programação)

0 comentários

Herança é um princípio de orientação a objetos, que permite que classes compartilhem atributos e métodos, através de "heranças". Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos. O conceito de herança de várias classes é conhecido como herança múltipla.
Como exemplo pode-se observar as classes 'aluno' e 'professor', onde ambas possuem atributos como nome, endereço e telefone. Nesse caso pode-se criar uma nova classe chamada por exemplo, 'pessoa', que contenha as semelhanças entre as duas classes, fazendo com que aluno e professor herdem as características de pessoa, desta maneira pode-se dizer que aluno e professor são subclasses de pessoa.
             Herança múltipla, em orientação a objetos, é o conceito de herança de duas ou mais classes. Ela é implementada nas linguagens de programação C++ e em Python, por exemplo. A linguagem Java possui apenas herança simples (uma classe possui no máximo uma classe pai), mas permite que uma classe implemente várias interfaces.O uso indiscriminado desta característica pode levar a uma codificação confusa que dificultaria a manutenção do código.                               

Mensagem (programação)

0 comentários

Mensagem, no caso da informática, seria uma espécie de 'mensagem fictícia' que ocorre dentro do sistema para 'invocar' diretamente uma classe com finalidade de usá-la ou simplesmente invocar 'estados' da classe, ou seja , mensagem seria uma ativação de classe e/ou derivados.

Cadastre-se

Receba atualizações por email .

Copyright © 2011 PortalTecch.net, Todos os direitos reservados.