42
PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. [email protected]

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOSfrozza/2012.1/IX10/IX10... · Desenvolvimento de aplicações Orientadas a ... yNo desenvolvimento de ... yEssa representação

  • Upload
    votuong

  • View
    227

  • Download
    0

Embed Size (px)

Citation preview

PROGRAMAÇÃO AVANÇADA- CONCEITOS DE ORIENTAÇÃO A OBJETOSProf. Angelo Augusto Frozza, [email protected]

ROTEIRO

1. Conceitos de Orientação a Objetos

IntroduçãoO paradigma da POOClasses e ObjetosAtributos e MétodosEncapsulamentoHerançaMensagens

INTRODUÇÃO

O aumento da complexidade dos softwares, de sua aplicação em diversos setores da sociedade e

também da grande concorrência entre empresas de desenvolvimento criou uma preocupação

crescente com aspectos do desenvolvimento de sistemas.

Assim, questões relativas ao tempo e custo de desenvolvimento, tecnologias utilizadas e

ferramentas de apoio são decisivas.

DIAS NETO, Arilo Claudio. Desenvolvimento de aplicações Orientadas a Objeto apoiado por tecnologias Java: (Parte I). SQL Magazine, Rio de Janeiro, ed. 12.

INTRODUÇÃO

A aplicação de boas práticas pregadas pela Engenharia de Software pode auxiliar a atingir esses objetivos, possibilitando a construção de

sistemas com um menor custo, mais confiáveis e com boa qualidade.

Atualmente, a principal prática adotada pelas empresas de desenvolvimento de software para

obter melhorias em seus produtos é o

PARADIGMA DE ORIENTAÇÃO A OBJETOS

DIAS NETO, Arilo Claudio. Desenvolvimento de aplicações Orientadas a Objeto apoiado por tecnologias Java: (Parte I). SQL Magazine, Rio de Janeiro, ed. 12.

INTRODUÇÃO

O Delphi suporta os seguintes paradigmas de programação:

Programação estruturada Ênfase em procedimentos e funções

(http://pt.wikipedia.org/wiki/Programação_estruturada)

Programação por eventosÊnfase na codificação de rotinas para eventos menores

(http://pt.wikipedia.org/wiki/Programação_orientada_a_eventos)

Programação Orientado a ObjetosÊnfase em objetos contendo estrutura e comportamento

(http://pt.wikipedia.org/wiki/Orientação_a_objeto)

INTRODUÇÃO

O uso de objetos permite a utilização de abstrações mais naturais e próximas dos

problemas reais, facilitando o mapeamento das soluções idealizadas pelos engenheiros de softwareem modelos e em implementações computacionais.

Entretanto, percebemos que em grande parte desses produtos somente a modelagem de alto

nível é feita seguindo este paradigma e apenas em alguns casos esses conceitos são respeitados

também durante a codificação.

DIAS NETO, Arilo Claudio. Desenvolvimento de aplicações Orientadas a Objeto apoiado por tecnologias Java: (Parte I). SQL Magazine, Rio de Janeiro, ed. 12.

INTRODUÇÃO

Devido à escassez de ferramentas e soluções que apoiem a orientação a objeto nas diversas etapas de desenvolvimento, é observado que frequentes mapeamentos são necessários para possibilitar o

desenvolvimento completo de um sistema.

Isto aumenta o risco de inserção de defeitos no software.

Como principal exemplo temos a questão do armazenamento de dados, para a qual é comum se realizar um mapeamento dos diagramas de classe

para o modelo de entidades e relacionamento. DIAS NETO, Arilo Claudio. Desenvolvimento de aplicações Orientadas a Objeto apoiado por tecnologias Java: (Parte I). SQL Magazine, Rio de Janeiro, ed. 12.

INTRODUÇÃO

Essa abordagem é utilizada pelo fato de banco de dados relacionais ser uma tecnologia já madura.

Para este caso, seria interessante o uso de uma plataforma de desenvolvimento que evite essa abordagem de mapeamento, permitindo que o

mesmo tipo de abstração possa ser aplicado em todas as etapas do ciclo de vida de desenvolvimento de um software.

DIAS NETO, Arilo Claudio. Desenvolvimento de aplicações Orientadas a Objeto apoiado por tecnologias Java: (Parte I). SQL Magazine, Rio de Janeiro, ed. 12.

INTRODUÇÃO

Exercício 001

Encontre uma edição de um jornal de grande circulação, por exemplo a edição de domingo do Diário Catarinense;

Na seção EMPREGOS, verifique quantas ofertas para a área de informática são publicadas, separando entre ofertas para programadores/analistas e outras;

Nas ofertas para programadores/analistas, quantas exigem o conhecimento de Orientação a Objetos / UML ou conceitos afins.

O QUE VEM PELA FRENTE?Algumas preocupações que devemos ter com relação ao desenvolvimento de aplicações OO:

Modelagem Orientada a Objeto

Processo de desenvolvimento de Software

Levantamento de requisitos

Diagrama de classes

Programação em camadas

O PARADIGMA DA POOAs linguagens de POO são baseadas em três conceitos fundamentais (CANTU, 2006):

EncapsulamentoNormalmente implementado através de classesUsado para ocultar detalhes de uma estrutura complexa

HerançaUm filho herda as características do pai

Polimorfismopoli + morphos (muitas + formas)Geralmente representado por métodos de classes distintas, com a mesma identificação (assinatura) mas com comportamentos diferentes

O PARADIGMA DA POOO mundo real está repleto de objetos, sejam elesconcretos ou abstratos;

Qualquer tipo de objeto possui atributos(características) e métodos (comportamentos)que são inerentes a esses objetos.

Objetos podem ser classificados em:ConcretosAbstratos

Cite exemplos de objetos...

O PARADIGMA DA POOExemplos – Objetos concretos

CANETACorEspessuraFabricanteDesenharEscrever

O PARADIGMA DA POOExemplos – Objetos concretos

PESSOAAlturaPesoIdadeNomeAndarLerEstudar

O PARADIGMA DA POOExemplos – Objetos abstratos

RETÂNGULOBaseAlturaCalcular áreaCalcular perímetro

O PARADIGMA DA POOExemplos – Objetos abstratos

DISCIPLINACódigoNomeListar conteúdo programáticoListar agenda de provas

CLASSES E OBJETOS

ClasseCorresponde a um tipo de dados definido pelo usuário, que tem um estado (dados internos ou propriedades) e algumas operações (seu comportamento ou seus métodos);

ObjetoUm objeto é uma instância de uma classe ou uma variável do tipo de dados definido pela classe;São entidades reais e ocupam espaço em memória;

(CANTU, 2006)

DICA: a relação entre classe e objeto é o mesmo que entre tipo e variável.

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 real;

Somente parte, porque não são todos os atributos e comportamentos que interessam ao sistema.

CLASSES E OBJETOS

Um objeto é uma instância de uma classeEssa instância possui valores próprios em cadaatributo definido na classe;

Então pode-se dizer que cada objeto tem uma identidadeprópria;

O termo instância é frequentemente usado paradescrever um objeto com valores próprios em seusatributos;

CLASSES E OBJETOS

Todo Objeto deve ter:

Estado

Comportamento

Identidade

CLASSES E OBJETOS

Estado

É representado pelos valores dos atributos de umobjeto em um determinado instante de tempo;

O estado de um objeto usualmente muda ao longo daexistência do objeto;

CLASSES E OBJETOS

Comportamento

Determina como um objeto age e reage: suasmodificações de estado e interações com outrosobjetos;

O comportamento é determinado pelo conjunto deoperações ou métodos que o objeto pode realizar;

CLASSES E OBJETOS

Comportamento

Operações ou métodos são algo que você pede para oobjeto fazer

Exemplo: fazer um depósito (comportamento de qualquerobjeto do tipo Conta).

“Fazer depósito” é um comportamento de qualquerobjeto do tipo Conta e não de qualquer objeto do tipoCliente, como podemos pensar a princípio.

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

CLASSES E OBJETOS

ComportamentoAo identificar comportamentos de objetos do mundodo software devemos levar em conta dois princípios:

Primeiro princípio: não vamos modelar todo ocomportamento dos objetos

Exemplo: Clientes tomam café no mundo real, masprovavelmente não no software

Segundo princípio: os comportamentos frequentementesão assumidos por objetos diferentes

Exemplo: No mundo real, quem faz um depósito? UmCliente

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

CLASSES E OBJETOS

Identidade

Refere-se à identificação do objeto;

Como cada objeto é único, ou seja, tem seus própriosvalores nos atributos, ele deve ser identificado poralgum nome;

Mesmo que seu estado seja idêntico ao de outroobjeto, ele tem identificação própria;

CLASSES E OBJETOS

Representação de objetos

Para usar objetos na programação, antes é necessáriodistinguir entre um objeto real e a representaçãode um objeto;

No desenvolvimento de programas, sempretrabalhamos com representações de objetos;

Essa representação precisa refletir os objetos reais,ou seja, objetos existentes no problema do mundo realque queremos solucionar;

CLASSES E OBJETOS

Representação de objetos

Para criar uma representação de cada objeto dentrodo programa, devemos antes criar uma estrutura,uma espécie de molde ou template que representeos atributos e comportamentos do tipo de objeto;

Essa estrutura é chamada de Classe;

CLASSES E OBJETOS

Representação de objetos

É a partir das classes que iremos criar asrepresentações de objetos que precisamos paradesenvolver o programa, ou seja, precisamos criar aestrutura (classe) apenas uma vez e, a partir dela,serão criadas as representações dos objetos

A representação dos objetos de um sistema forma odiagrama de classes

CLASSES E OBJETOS

Exemplo de classe

CLASSES E OBJETOS

Exemplo de diagrama de classes

CLASSES E OBJETOS

Exemplo de diagrama conceitual

CLASSES E OBJETOS

Exemplo de diagrama lógico

ATRIBUTOS E MÉTODOS

AtributosSão os elementos que definem a estrutura de uma classe

É o equivalente a uma variável;Representam as características (estado) de cada objeto;

MétodosSão os procedimentos que formam os comportamentos e serviços oferecidos pelos objetos de uma classe;

Assemelham-se às sub-rotinas, procedimentos e funções;

ENCAPSULAMENTO

O encapsulamento permite proteger os membros de uma classe da manipulação externa quando isto se faz necessário.

Por exemplo, se há uma restrição sobre os valores possíveis que determinado atributo deve assumir, a classe não deve permitir que valores diferentes sejam definidos para este atributo;Para isto, fazemos uso do encapsulamento;

ENCAPSULAMENTO

Usando os modificadores de acesso public, private e protected, podemos definir qual o nível de acesso permitido para cada membro (atributo/método) de uma classe, de modo a proteger este membro da manipulação direta quando isto for necessário;

public - indica campos e métodos que são livremente acessíveis de qualquer outra parte de um programa;

private - indica atributos e métodos que não são acessíveis fora da Unit que declara a classe;

protected - indica atributos e métodos com visibilidade limitada. Apenas a classe atual e suas classes herdadas podem acessar os elementos protected;

ENCAPSULAMENTO

Por exemplo, num programa de controle bancário, em que osaldo de uma Conta Poupança não pode ser negativo, nãopodemos permitir que o valor do saldo seja definidodiretamente, sob pena de que o usuário, intencional ouacidentalmente, atribua valor negativo a ele;

Para evitar que isto aconteça, tornamos o atributomanipulável diretamente somente à partir do código-fonteda própria classe a que ele pertence e fornecemos métodosque possam ser acessados de fora da classe que manipulamo atributo, respeitando as restrições que devem agir sobreele;

ENCAPSULAMENTO

O encapsulamento vale para métodos e para atributos;

No caso dos métodos, a idéia é impedir o acesso de fora da classe, quando o objetivo do método é apenas complementar/auxiliar outro método da classe;

Por exemplo, um método que verifica a disponibilidade da quantidade de notas necessárias para um saque num caixa eletrônico;Neste caso, o objetivo do método é exclusivamente auxiliar o método que realiza saques e, portanto, não deve ser acessível fora da classe em que ele foi declarado, evitando o uso indevido desta funcionalidade;

HERANÇA

Herança é um mecanismo que permite quecaracterísticas comuns a diversas classes sejamdeclaradas em uma classe base, ou superclasse;

A partir de uma classe base, outras classespodem ser especificadas;

HERANÇA

Cada classe derivada ou subclasse apresenta ascaracterísticas (atributos e métodos) da classebase e acrescenta a elas o que for definido departicularidade para ela.

MENSAGENS

Na Orientação a Objetos, dá-se o nome deMensagem à chamada de um método de umobjeto por outro objeto;Neste caso, a troca de mensagens entre os objetosserve para que um se utilize de funcionalidadesdo outro e, com isso, temos a separação dasresponsabilidades de cada objeto;Isto é, cada objeto implementa apenas asfuncionalidades pelas quais ele é responsável equando necessita de funcionalidades deresponsabilidade de outro objeto, envia umamensagem solicitando a execução do métodocorrespondente do outro objeto.

CRIAÇÃO DO DIAGRAMA DE CLASSES

Metodologia:

(Adaptado de: SPINOLA, Rodrigo. Diagrama de Classes na UML. In: SQL Magazine. ed. 89.)

CRIAÇÃO DO DIAGRAMA DE CLASSES

Mais informações sobre diagrama de classes:

http://www.devmedia.com.br

http://www.devmedia.com.br/artigo-sql-magazine-63-utilizando-uml-diagrama-de-classes/12251

http://www.devmedia.com.br/artigo-sql-magazine-57-introducao-a-construcao-de-diagrama-de-classes-um-estudo-de-caso/10861

http://www.devmedia.com.br/artigo-sql-magazine-45-projeto-de-software-orientado-a-objetos-com-uml-2-0-saiba-como-elaborar-o-diagrama-de-classes-e-de-seq%C3%BCencia-de-sua-aplicacao-a-partir-da-especificacao-de-requisit/7334