A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Orientação a Objetos & UML

Apresentações semelhantes


Apresentação em tema: "Orientação a Objetos & UML"— Transcrição da apresentação:

1 Orientação a Objetos & UML
Professor Marcelo Bezerra de Alcântara

2 Parte I: Orientação a Objetos
Agenda Parte I: Orientação a Objetos Módulo 1 - Introdução Módulo 2 - Classes x Objetos Módulo 3 - Relacionamentos Módulo 4 - Herança e Polimorfismo

3 Parte I: Orientação a Objetos
Módulo 1 Introdução

4 Parte I: OO / Módulo 1: Introdução
Agenda Módulo 1 – Introdução Análise Estruturada Motivação Análise Estruturada x Orientação à Objetos Abstração Definição Características Parte I: OO / Módulo 1: Introdução

5 Parte I: OO / Módulo 1: Introdução
Análise estruturada Criada nos anos 60/70 Guerra Fria Grandes Projetos Ambientes de Grande Porte Pouca maturidade em Programação Parte I: OO / Módulo 1: Introdução

6 Parte I: OO / Módulo 1: Introdução
Análise estruturada O objetivo principal era fazer com que o pessoal de sistemas pensasse antes de agir; Tentativa de impor alguma ordem à natureza acidental da construção de programas; Produziu um modelo rigorosamente seqüencial; análise; O que ? projeto; Como implementação. ‘Meyer‘: “Tradicionalmente, a literatura sobre engenharia de software vem tratando análise e implementação (com projeto entre elas) como atividades fundamentalmente diferentes, suscetíveis a diferentes métodos, usando diferentes notações e seguindo diferentes objetivos, freqüentemente com a conotação de que a análise e o projeto são as únicas coisas que realmente interessam, sendo a implementação apenas uma tarefa inevitável. Este ponto de vista tem justificativas históricas: desde sua infância nos anos 70, a engenharia de software foi uma tentativa de impor alguma ordem à natureza acidental da construção de programas, ensinando o pessoal de sistemas a pensarem antes de agirem. Conseqüentemente, a ênfase estava sobre os primeiros estágios do desenvolvimento, na necessidade de especificar o que está prestes a ser implementado. Isso tudo é justificado, agora tanto quanto antes. Mas algumas das conseqüências deste esforço essencialmente benéfico foram longe demais, criando discrepâncias entre as diversas atividades, e produzindo um modelo rigorosamente seqüencial, muito embora produtos e processos com qualidade demandem reversibilidade e evolução sem rupturas. Com a Tecnologia de Objetos podemos eliminar as diferenças desnecessárias entre análise, projeto e implementação – as necessárias se manifestarão suficientemente claras – e reabilitar a tão difamada tarefa de implementação. Era natural para os pioneiros da engenharia de software, quando programar significava tentar resolver muitas questões dependentes da máquina e explicar o resultado para o computador em uma linguagem que ele poderia entender, geralmente de baixo-nível e por vezes pouco elegante, desprenderem-se destes aspectos mundanos e em vez disso enfatizar a importância de estudar os conceitos abstratos do domínio do problema. Porém nós podemos preservar estas qualidades de abstração sem perder o vínculo com a solução. O segredo é fazer com que os conceitos de programação, e as notações para programação, sejam suficientemente de alto-nível para que possam servir apropriadamente como ferramentas de modelagem. Isto é o que a Tecnologia de Objetos alcança.” Parte I: OO / Módulo 1: Introdução 6

7 Parte I: OO / Módulo 1: Introdução
Análise estruturada Tradicionalmente, a literatura tratava análise, projeto e implementação como atividades diferentes e, até certo ponto, desconexas pois tinham: diferentes métodos; diferentes notações e diferentes objetivos. Na necessidade de especificar o que está prestes a ser implementado tratavam a análise e o projeto como as únicas coisas que realmente interessam. A implementação seria apenas algo inevitável. Parte I: OO / Módulo 1: Introdução 7

8 Motivação - Orientação a objetos
Crise do software e necessidade de mudar Surgiu a idéia da orientação a objetos que representa melhor o mundo real, uma vez que a percepção e o raciocínio do ser humano estão relacionados diretamente com o conceito de objetos. Objetivo principal da utilização do paradigma da Orientação a Objetos, na construção de software: Rápido não perder muito tempo no desenvolvimento Barato linhas de montagem e reutilização de código Flexível fácil modificar ou estender - Construir rápido Na medida em que os requisitros e plataformas são fluidos e evolutivos, dispender tempo excessivo é um erro. Com a necessidade de informatização cada vez maior, a rapidez no desenvolvimento de software é imprencidível. Parte I: OO / Módulo 1: Introdução

9 Parte I: OO / Módulo 1: Introdução
Estruturada x OO Com a orientação a objetos procura-se eliminar as diferenças entre as etapas de análise, projeto e implementação, reabilitando a difamada tarefa de implementação O segredo é fazer com que os conceitos de programação, e as notações para programação, sejam suficientemente de alto-nível para que possam servir apropriadamente como ferramentas de modelagem. Parte I: OO / Módulo 1: Introdução 9

10 A/P orientados a objetos A/P estruturados
Estruturada x OO Sistema de informação de bibliotecas A/P orientados a objetos A/P estruturados Decompor por objetos ou conceitos Decompor por funções ou processo Sistema Registrar empréstimos Catálogo Bibliotecário Relatar multas Livro Biblioteca Adicionar recursos Parte I: OO / Módulo 1: Introdução 10

11 Parte I: OO / Módulo 1: Introdução
Definição Uma nova maneira de pensar os problemas utilizando modelos organizados a partir de conceitos do mundo real. O componente fundamental é o objeto que combina estrutura e comportamento em uma única entidade. (Rumbaugh) Parte I: OO / Módulo 1: Introdução

12 Parte I: OO / Módulo 1: Introdução
Características Software desenvolvido como hardware Facilita o reuso Permite um nível mais elevado de abstração Linguagem padrão de representação: UML Parte I: OO / Módulo 1: Introdução

13 Motivação - Orientação a Objetos
Conceitos Chaves Abstração Encapsulamento Polimorfismo Identidade Mecanismos Básicos Objetos Atributos Métodos ou Serviços Relacionamentos Herança Parte I: OO / Módulo 1: Introdução

14 Parte I: OO / Módulo 1: Introdução
Abstração Parte I: OO / Módulo 1: Introdução

15 Abstração Processo de identificar as qualidades ou propriedades importantes do fenômeno sendo modelado. (Carlo Gezzi/ Mehdi Jazayeri) Uma abstração descreve as características essenciais de um objeto; aquelas que o distinguem de todos os outros tipos de objeto e fornece assim, para aquele que analisa um sistema, fronteiras conceituais bem definidas. (Booch) Parte I: OO / Módulo 1: Introdução

16 Parte I: OO / Módulo 1: Introdução
Abstração Nesta fase tenta-se retirar elementos e requisitos que irão ajudar na resolução de um problema; É o processo de retirar do domínio do problema os detalhes relevantes e representá-los não mais em uma linguagem do domínio e sim na linguagem da solução. O sucesso de um Programa Orientado a Objeto está condicionado a uma boa abstração do problema. Parte I: OO / Módulo 1: Introdução

17 Parte I: OO / Módulo 1: Introdução
Abstração No paradigma da Programação Estruturada identifica-se as funções como sendo "operações abstratas que resolvem um problema de programação", ou seja, ocorre a abstração de procedimentos. No paradigma da Orientação a Objetos, tem-se a Abstração de Dados, onde uma estrutura de dados deve incluir as operações que ocorrem com ela. Parte I: OO / Módulo 1: Introdução

18 Parte I: OO / Módulo 1: Introdução
Encapsulamento É a propriedade de se implementar dados e procedimentos correlacionados em uma mesma entidade (objeto). Trata-se de uma das principais vantagens da Programação Orientada a Objetos sobre a Programação Estruturada, principalmente na reutilização de códigos. Parte I: OO / Módulo 1: Introdução

19 Parte I: OO / Módulo 1: Introdução
Encapsulamento Código . . . Dado Programação estruturada Código . . . Dado Orientação a Objetos Parte I: OO / Módulo 1: Introdução

20 Parte I: OO / Módulo 1: Introdução
Encapsulamento Pode-se entender intuitivamente o significado de encapsulamento quando se observa o mundo real. Nos objetos do mundo real, atributos e ações são inerentes ao próprio objeto. Exemplo : A um automóvel estão associados tanto atributos (modelo, kilometragem, cilindradas, capacidade do tanque de combustível, etc), quanto suas potencialidades (velocidade média, consumo de combustível, etc). Parte I: OO / Módulo 1: Introdução

21 Parte I: OO / Módulo 1: Introdução
Polimorfismo O significado da palavra, originada do grego, é o de "possuir várias formas". Na A.O.O. é usado para indicar a propriedade de se utilizar o mesmo nome para métodos diferentes. Uma vantagem do polimorfismo é a relativa facilidade de manutenção e extensão dos programas. A idéia de polimorfismo está ligada com a indicação de que os atributos só devem ter seus valores alterados por métodos da sua classe. Parte I: OO / Módulo 1: Introdução

22 Parte I: OO / Módulo 1: Introdução
Polimorfismo objGeral.getNI(); Parte I: OO / Módulo 1: Introdução

23 Parte I: OO / Módulo 1: Introdução
Polimorfismo objGeral.getNI(); Parte I: OO / Módulo 1: Introdução

24 Parte I: OO / Módulo 1: Introdução
Polimorfismo objGeral.getNI(); Parte I: OO / Módulo 1: Introdução

25 Parte I: OO / Módulo 1: Introdução
Identidade Característica peculiar de um objeto que denota a existência em separado do objeto, mesmo que ele tenha os mesmos valores de atributos de outro objeto Uma identificação única de cada objeto Nome: Ricardo Série: 2ª Turma: A Nome: Ricardo Série: 2ª Turma: A Parte I: OO / Módulo 1: Introdução

26 Parte I: Orientação a Objetos
Módulo 2 Classes x Objetos

27 Parte I: OO / Módulo 2: Classes x Objetos
Agenda Módulo 2 – Classes x Objetos Objetos Classes Classes x Objetos Mensagens Atributos Operações Encapsulamento Parte I: OO / Módulo 2: Classes x Objetos

28 Parte I: OO / Módulo 2: Classes x Objetos
Classes e Objetos Objeto: Conjunto de dados e procedimentos relacionados utilizados para modelar coisas ou conceitos Classe: Arcabouço que serve de molde para a criação de objetos. Define os dados e procedimentos comuns a todos objetos da classe Parte I: OO / Módulo 2: Classes x Objetos

29 Parte I: OO / Módulo 2: Classes x Objetos
Nosso mundo é um mundo de objetos, para se convencer disso basta tropeçar neles (Castanheda) Parte I: OO / Módulo 2: Classes x Objetos

30 Parte I: OO / Módulo 2: Classes x Objetos
Tem atributos, estado, comportamento e identidade Parte I: OO / Módulo 2: Classes x Objetos

31 Parte I: OO / Módulo 2: Classes x Objetos
Os atributos de um objeto definem as qualidades e características da entidade que ele representa O estado de um objeto é o particular conjunto de valores de seus atributos em um dado momento O comportamento de um objeto é definido pelas alterações do seu estado em resposta a mensagens que ele recebe (interação com outros objetos) Parte I: OO / Módulo 2: Classes x Objetos

32 Parte I: OO / Módulo 2: Classes x Objetos
Ex: uma árvore pode ser grande ou pequena, nova ou velha, frutífera ou não, etc. produz clorofila, gás carbônico, sombra, faz fotosíntese pode estar doente ou não, com ou sem folhas Parte I: OO / Módulo 2: Classes x Objetos

33 Parte I: OO / Módulo 2: Classes x Objetos
Classes definem elementos de mesma natureza Modelam características comuns a estes Ex: árvores classe árvore objeto árvore objeto árvore objeto árvore Parte I: OO / Módulo 2: Classes x Objetos

34 Parte I: OO / Módulo 2: Classes x Objetos
Nome: Mafalda Série: 1ª Turma: B Nome: Ricardo Série: 2ª Turma: A Classe Nome: Ricardo Série: 2ª Turma: A Nome: André Série: 1ª Turma: B Objeto Parte I: OO / Módulo 2: Classes x Objetos

35 Parte I: OO / Módulo 2: Classes x Objetos
public class Aluno { private String nome; private String serie; private String turma; public String getNome() return nome; } public void setNome(String nome) this.nome = nome; ... public void teste() { Aluno mafalda = new Aluno(); Aluno ricardo1 = new Aluno(); Aluno ricardo2 = new Aluno(); mafalda.setNome("Mafalda"); mafalda.setSerie("1ª"); mafalda.setTurma("B"); ricardo1.setNome("Ricardo"); ricardo1.setSerie("2ª"); ricardo1.setTurma("A"); ricardo2.setNome("Ricardo"); ricardo2.setSerie("2ª"); ricardo2.setTurma("A"); ... } Objetos Parte I: OO / Módulo 2: Classes x Objetos

36 Parte I: OO / Módulo 2: Classes x Objetos
Instâncias Objetos são instâncias de classes Os atributos e métodos de uma classe tornam-se disponíveis em cada objeto instanciado Nome Classe Funcionário Cargo Nome1 Nome2 Nome3 Objetos Cargo1 Cargo2 Cargo3 Parte I: OO / Módulo 2: Classes x Objetos

37 Parte I: OO / Módulo 2: Classes x Objetos
Instâncias ... Uma classe declara os elementos que compõe um objeto A declaração não aloca memória: a classe é usada apenas para modelar as características de um conjunto de objetos A instanciação de um objeto de uma classe provoca a alocação de memória para conter os seus atributos Parte I: OO / Módulo 2: Classes x Objetos

38 Parte I: OO / Módulo 2: Classes x Objetos
Atributos Representam os dados do objeto Visibilidade Pública Todos os objetos têm acesso Faz parte da interface da classe Protegida Acessado por operações da classe e de suas filhas Privada Só acessado de dentro da própria classe Parte I: OO / Módulo 2: Classes x Objetos

39 Variáveis de Instância
Os atributos dos objetos são definidos por variáveis. As variáveis de instância definem atributos que podem receber diferentes valores em objetos distintos. Cada objeto tem sua própria variável de instância Parte I: OO / Módulo 2: Classes x Objetos

40 Variáveis de Instância
Ex: na classe funcionário, cada objeto instanciado modela uma pessoa que tem seu próprio nome nome é, portanto, uma variável de instância João Carlos Silvia Cargo1 Cargo2 Cargo3 Parte I: OO / Módulo 2: Classes x Objetos

41 Parte I: OO / Módulo 2: Classes x Objetos
Variáveis de Classe Atributos comuns a todos os elementos da classe são armazenados em variáveis de classe Uma variável de classe armazena informações sobre a classe inteira, não apenas sobre um determinado objeto Ex: na classe funcionário, o número de funcionários de uma empresa seria uma variável de classe, pois não se refere a nenhum funcionário em particular Parte I: OO / Módulo 2: Classes x Objetos

42 Parte I: OO / Módulo 2: Classes x Objetos
Classes x Instâncias Ex: uma empresa com 3 funcionários : Nome Cargo Variável de Classe Total: 3 João Carlos Silvia Cargo1 Cargo2 Cargo3 Variáveis de Instância Parte I: OO / Módulo 2: Classes x Objetos

43 Parte I: OO / Módulo 2: Classes x Objetos
Classes x Instâncias Ex: membros de uma família Nome Variável de Classe: nome de família Sobrenome: Silva Idade Sexo Aldo Bea Ido 23 10 88 Masc Fem Masc Aldo Silva Bea Silva Ido Silva Parte I: OO / Módulo 2: Classes x Objetos

44 Parte I: OO / Módulo 2: Classes x Objetos
Métodos O comportamento de um objeto é definido a partir de procedimentos que alteram seu estado Em OO estes procedimentos são chamados de métodos Métodos são equivalentes a funções em C ou C++, com a diferença que são definidos no escopo de uma classe Parte I: OO / Módulo 2: Classes x Objetos

45 Parte I: OO / Módulo 2: Classes x Objetos
Métodos ... Objetos comunicam-se entre si através de métodos Através dos métodos é possível: consultar os valores de atributos (variáveis) de um objeto alterar o valor de atributos do objeto solicitar um serviço ao objeto fornecer informações ao objeto Parte I: OO / Módulo 2: Classes x Objetos

46 Parte I: OO / Módulo 2: Classes x Objetos
Métodos ... Ex: comportamento de um funcionário : informa seu nome informa seu cargo toma cafezinho executa um trabalho dorme reclama etc. Parte I: OO / Módulo 2: Classes x Objetos

47 Parte I: OO / Módulo 2: Classes x Objetos
Métodos Tipos Construtora Operação que cria e/ou inicializa um objeto Primeira operação executada Executada no momento em que o objeto é instanciado Seletora Pode ler, mas não alterar o estado do objeto Modificadora Pode alterar o estado do objeto Destrutora Operação que finaliza um objeto Última operação executada Executada no momento em que o objeto é destruído Parte I: OO / Módulo 2: Classes x Objetos

48 Parte I: OO / Módulo 2: Classes x Objetos
Métodos Visibilidade Pública Protegida Privada Parâmetros Recebidos através da mensagem Exemplo: parâmetros Altura e Largura na operação CalcularAreaRetangulo Tipo de Retorno Tipo do valor retornado opcionalmente para o objeto invocador Exemplo: tipo de retorno float da operação CalcularAreaRetangulo Parte I: OO / Módulo 2: Classes x Objetos

49 Parte I: Orientação a Objetos
Módulo 3 Relacionamentos

50 Parte I: OO / Módulo 3: Relacionamentos
Agenda Módulo 3 – Relacionamentos Associação Agregação Composição Dependência Parte I: OO / Módulo 3: Relacionamentos

51 Parte I: OO / Módulo 3: Relacionamentos
Associação Relacionamento entre objetos de classes independentes Dependência estrutural Associação Unária Parte I: OO / Módulo 3: Relacionamentos

52 Parte I: OO / Módulo 3: Relacionamentos
Associação Associação Binária Associação Ternária Parte I: OO / Módulo 3: Relacionamentos

53 Parte I: OO / Módulo 3: Relacionamentos
Associação Classe de Associação Existência de atributos ou operações próprios da associação Parte I: OO / Módulo 3: Relacionamentos

54 Parte I: OO / Módulo 3: Relacionamentos
Agregação Caso particular da Associação Relacionamento do tipo todo-parte Agregação por referência Um atributo na classe “todo” é uma referência para um objeto da classe “parte” Parte I: OO / Módulo 3: Relacionamentos

55 Parte I: OO / Módulo 3: Relacionamentos
Composição Caso particular da Agregação Não faz sentido a existência do objeto “parte” sem a existência do objeto “todo” Agregação por valor O objeto “parte” é um atributo contido no objeto “todo” Parte I: OO / Módulo 3: Relacionamentos

56 Parte I: OO / Módulo 3: Relacionamentos
Dependência Dependência comportamental Uma classe depende de algum serviço oferecido pela outra Uma alteração na classe independente pode afetar a classe dependente Parte I: OO / Módulo 3: Relacionamentos

57 Parte I: Orientação a Objetos
Módulo 4 Herança e Polimorfismo

58 Parte I: OO / Módulo 4: Herança e Polimorfismo
Agenda Módulo 4 – Herança e Polimorfismo Herança Classes Abstratas Redefinição Polimorfismo Parte I: OO / Módulo 4: Herança e Polimorfismo

59 Parte I: OO / Módulo 4: Herança e Polimorfismo
Herança de Classes Classes podem ser organizadas na forma de uma árvore genealógica Assim como seres vivos herdam características de seus projenitores, classes herdam o comportamento e atributos de outras classes A classe filho é chamada de subclasse e a classe pai de superclasse Parte I: OO / Módulo 4: Herança e Polimorfismo

60 Parte I: OO / Módulo 4: Herança e Polimorfismo
A herança permite estruturar o programa, fatorando características comuns As subclasses podem ser especializadas de forma a incorporar outros atributos e comportamentos (diferentes da superclasse) Uma subclasse contém todas as características de uma superclasse, mas o inverso não é verdadeiro todos os homes são animais, nem todos os animais são homens Parte I: OO / Módulo 4: Herança e Polimorfismo

61 Parte I: OO / Módulo 4: Herança e Polimorfismo
As subclasses herdam atributos, operações e relacionamentos da superclasse É possível redefinir o que foi herdado Superclasse Subclasse Parte I: OO / Módulo 4: Herança e Polimorfismo

62 Parte I: OO / Módulo 4: Herança e Polimorfismo
Classes Abstratas Não podem ser instanciadas Servem para modelar os atributos, operações e relacionamentos comuns de uma hierarquia de classes Os objetos da hierarquia são instanciados a partir das subclasses Parte I: OO / Módulo 4: Herança e Polimorfismo

63 Parte I: OO / Módulo 4: Herança e Polimorfismo
Redefinição Redefinição de métodos da classe pai Parte I: OO / Módulo 4: Herança e Polimorfismo

64 Parte I: OO / Módulo 4: Herança e Polimorfismo
Classe método resolução de chamada de método Classe Classe Classe Classe Objeto Objeto mensagem Parte I: OO / Módulo 4: Herança e Polimorfismo

65 Parte I: OO / Módulo 4: Herança e Polimorfismo
Classe Mascarando métodos método Classe Classe este método responde Classe Classe método Objeto Objeto mensagem Parte I: OO / Módulo 4: Herança e Polimorfismo

66 Parte I: OO / Módulo 4: Herança e Polimorfismo
Muitas “formas” Mesma operação se comporta de forma diferente dependendo do tipo do objeto Ligação tardia (late binding) Figura Circulo Triangulo Retangulo Colorido desenhar() Parte I: OO / Módulo 4: Herança e Polimorfismo

67 Parte I: OO / Módulo 4: Herança e Polimorfismo
Exercício Exercícios Parte I: OO / Módulo 4: Herança e Polimorfismo

68 Parte I: OO / Módulo 4: Herança e Polimorfismo
Exercício Qual a diferença entre Análise Estruturada e Análise Orientada a Objetos; Cite exemplos de operações polimórficas; O que é encapsulamento? Qual a relação entre Objetos e Classe? Quais os tipos de visibilidade existentes para atributos e métodos? Qual a diferença entre atributo de instância e atributo de classe? Cite um exemplo de associações de agregação e composição; O que são classes abstratas? Cite um exemplo do uso de herança; Parte I: OO / Módulo 4: Herança e Polimorfismo


Carregar ppt "Orientação a Objetos & UML"

Apresentações semelhantes


Anúncios Google