Linguagens e Técnicas de Programação II



Documentos relacionados
Programação de Computadores - I. Profª Beatriz Profº Israel

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Programação Orientada a Objetos

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

1.1. Definição do Problema

Herança. Prof. Leonardo Barreto Campos 1

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Análise e Projeto de Sistemas OO

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Algoritmos e Programação II

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Processo de Desenvolvimento de Software

3. Numerar a coluna da direita conforme a da esquerda 1) Classe (2) :Aluno 2) Um dado objeto (3) oaluno:aluno 3) Objeto (1) Aluno

Trabalho Prático II - Resta 1 Data de Entrega: Conferir no calendário!

Programação Orientada a Objetos

Exemplo, ao invés de você ter centenas de funções no mesmo contexto para atividades diferentes, você agrupa em objetos com comportamentos semelhantes

Algoritmos APRENDENDO A PROGRAMAR COM C#

Introdução ao Java. Prof. Herbert Rausch Fernandes

Orientação a Objetos

Métodos Formais. Agenda. Relações Binárias Relações e Banco de Dados Operações nas Relações Resumo Relações Funções. Relações e Funções

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Unified Modeling Language. Pacotes. José Correia, Junho 2006 ( Um pacote é um mecanismo de agrupamento genérico

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Banco de Dados. Modelo Entidade Relacionamento Estendido DCC IME USP. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

Fundamentos de Arquitetura e Organização de Computadores

Programação de Computadores I. Linguagem C Função

Sistemas Numéricos. Tiago Alves de Oliveira

Público Alvo: Empresas de micro e pequeno porte do setor de Tecnologia da Informação.

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

LINHAS MESTRAS; FASES; DISCIPLINAS; PRINCÍPIOS E MELHORES PRÁTICAS.

Sistema Operacional. Implementação de Processo e Threads. Prof. Dr. Márcio Andrey Teixeira Sistemas Operacionais

2. Introdução à Programação e Análise. Orientada a Objetos. Programação Orientada a Objetos em C O que é a Programação Orientada a Objetos?

Administração Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

UMA ABORDAGEM SOBRE A EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO COM ÊNFASE EM ORIENTAÇÃO A OBJETO E ORIENTAÇÃO A ASPECTO

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Sistemas de Tempo Real

Modelando sistemas em UML - Casos de uso.

Avaliação e Desempenho Aula 1 - Simulação

Programação Orientada a Objetos

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

Arquiteturas para Sistemas Distribuídos I

PHP ORIENTADO A OBJETOS. 2º Encontro PHP MG 16 e 17 de Outubro / Charles Schaefer

OBSERVAÇÕES: EXERCÍCIOS

Guia para Modelagem de Casos de Uso Metodologia CELEPAR

Termo genérico que se aplica a vários tipos de diagramas que enfatizam interações de objetos.

Programação em JAVA. Subtítulo

Introdução à Ciência da Informação

Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V

Histórico e Evolução da Computação

Algoritmo e Pseudo-código

RESOLUÇÃO. Artigo 2º - O Curso, ora criado, será oferecido no turno noturno, com 10 semestres de duração e com 50 vagas iniciais.

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

Linguagens de Programação:

Informação-Prova de Equivalência à disciplina de: Aplicações Informáticas B. 1. Introdução. Ensino Secundário. Ano letivo de 2011/12

Modulo II Padrões GRASP

Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?

Estruturas de Repetição

PRO Pesquisa Operacional II

Capítulo 4 - Polimorfismo

Modelos Conceituais de Dados

INE 5323 Banco de Dados I

Metodologias de Programação

Conceitos básicos de programação

Programa de Matemática 2º ano

Universidade Paulista

MÉTRICAS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação Linear - Parte 4

Implementação do Relatório de Falhas em SAP-PM

Elementos básico de uma rede Samba - Local Master Browser

Boas situações de Aprendizagens. Atividades. Livro Didático. Currículo oficial de São Paulo

USANDO O PYTHON PARA ESCREVER PLUG-INS PARA O GIMP

PLANEJAMENTO SIMPLIFICADO DE PROJETOS

Método Simplex Revisado

Padrões de Projeto. Factory Method

DEVF IT Solutions. Gerenciador de Log. Documento Visão. Versão 2.0. Projeto Integrador 2015/2 Engenharia de Software

Roteiro. Modelagem com Entidade-Relacionamento Estendido. Processo de Projeto de Banco de Dados. BCC321 - Banco de Dados I. Ementa.

IDEF é utilizado para criar uma descrição clara e detalhada de um processo ou um sistema.

O SOFTWARE R EM AULAS DE MATEMÁTICA

Qualidade de Produto. Maria Cláudia F. P. Emer

Informática Aplicada

Linguagens e Paradigmas de Programação

BANCO DE DADOS I AULA 2. Willamys Araújo willamysaraujo7@gmail.com

Transcrição:

Linguagens e Técnicas de Programação II Modelagem Orientada a Objetos Renato Dourado Maia Universidade Estadual de Montes Claros Sistemas de Informação

Lembrando Na Unidade I Gerenciando a Complexidade, vimos: Um sistema de software é inerentemente complexo e muitas vezes ultrapassa a capacidade intelectual humana. Sistemas complexos podem ser analisados a partir de sua decomposição em coisas, os objetos, que têm estado e comportamentos próprios. A complexidade da decomposição pode ser organizada na forma de uma hierarquia com duas relações básicas: é um tipo de e é parte de ; Os sistemas complexos geralmente evoluem a partir de formas estáveis mais simples. 2/42

Unidade II Na Unidade II Modelagem Orientada a Objetos, veremos: Como utilizar a metodologia OO para organizar a complexidade de sistemas de software. Quais os principais mecanismos que poderão ser utilizados para isso. Uma introdução à análise e ao projeto orientado a objetos. 3/42

Unidade II Unidade II Modelagem Orientada a Objetos: A Evolução dos modelos orientados a objetos. A abstração de objetos: encapsulamento, interface e implementação. Reutilizando a implementação. Reutilizando a interface por intermédio de herança. Objetos intercambiáveis: polimorfismo. Introdução à Análise e ao Projeto Orientado a Objetos u- tilizando a UML (Unified Modeling Language). 4/42

Modelos OO Evolução A análise e o projeto orientados a objetos constituem uma metodologia que nos leva a uma decomposição orientada a objetos de um sistema. Os modelos resultantes serão centrados nos objetos (coisas/entidades) que compõem o sistema. A análise OO é bastante diferente da análise estruturada, que é centrada nos procedimentos. 5/42

Modelos OO Evolução Vários tipos de modelos, cada um capturando aspectos distintos do sistema, poderão ser criados: Modelo Lógico: estrutura de classes e objetos. Modelo físico: módulos e processos. Os modelos OO surgiram como consequência da própria evolução das linguagens de programação... 6/42

Modelos OO Evolução O processo de abstração também evoluiu! Lembrando: Abstrair consiste no processo de retirar do domínio do problema os detalhes relevantes e representá-los não mais na linguagem do domínio, e sim na linguagem da solução. 7/42

Modelos OO Evolução No contexto da engenharia, abstrair corresponde a criar modelos que serão utilizados para a resolução do problema. Problema ABSTRAÇÃO Modelo 8/42

Modelos OO Evolução Diferentes Abstrações 9/42

Modelos OO Evolução O processo de abstração também evoluiu: Todas as linguagens de programação fornecem meios para a criação de abstrações. A linguagem Assembly é uma pequena abstração da máquina na qual os programas são executados. Linguagens imperativas, como BASIC, FORTRAN e C, são abstrações da linguagem Assembly: Nessas linguagens, é necessário pensar em termos da estrutura do computador, ao invés de se pensar em termos da estrutura do problema a ser resolvido! 10/42

Modelos OO Evolução O processo de abstração também evoluiu: O programador deve estabelecer uma associação entre o modelo da máquina (no espaço da solução) e o modelo do problema que está sendo resolvido (no espaço do problema). O esforço para fazer esse mapeamento pode ser grande... 11/42

Modelos OO Evolução O processo de abstração também evoluiu: A programação orientada a objetos tenta trazer o espaço da solução para o espaço do problema: ambos são representados como objetos! O programa permite adaptação ao problema por meio da adição de novos tipos ao espaço da solução que mapeiam os tipos existentes no espaço do problema: descreve-se o problema em termos do problema e não em termos da solução! Vocês conseguem perceber como isso é fantástico? 12/42

Modelos OO Evolução O processo de abstração também evoluiu: Cada objeto funciona como uma pequena parte do problema, possuindo seu estado e suas operações, o que é semelhante ao que acontece com os objetos do mundo real, que possuem características e comportamentos. O mundo computacional se aproxima mais do mundo real... 13/42

A Abstração de Objetos O que são objetos? 14/42

A Abstração de Objetos Um objeto é uma variável, e armazena dados... Então, uma struct é um objeto? Sim, uma struct é um objeto. Entretanto, um objeto é mais abrangente do que uma struct: pode-se pedir que determinadas operações sejam realizadas sobre os objetos. Assim, um objeto possui atributos, que são os dados, e comportamentos, que são os métodos, procedimentos ou funções que atuam sobre ele. Exemplos de objetos: pessoas, carros, empresas, etc.. 15/42

A Abstração de Objetos Programação Estruturada Programação Orientada a Objetos Objeto Dados Funções Atributos (Dados) Métodos (Funções) 16/42

A Abstração de Objetos O QUE É UM PROGRAMA EM LINGUAGEM OO? 17/42

A Abstração de Objetos Um programa em linguagem OO é um conjunto de objetos dizendo uns para os outros o que fazer por meio do envio de mensagens... As mensagens, na verdade, podem ser enxergadas como chamadas a funções que pertencem a um objeto específico. Cada objeto tem sua própria região de memória, que pode, inclusive, ser composta por outros objetos, e tem um tipo, isto é, pertence a uma classe. 18/42

Objetos e Interfaces Os objetos, apesar de únicos, fazem parte de uma classe de objetos, possuindo, portanto, características comuns. A criação de tipos abstratos de dados, as classes, constitui um conceito fundamental da programação OO: Tipos de dados abstratos funcionam de maneira similar aos tipos fundamentais: Podem ser criadas variáveis do tipo: objetos/instâncias. As variáveis podem ser manipuladas. 19/42

Objetos e Interfaces Os objetos de cada classe possuem algumas coisas em comum: Toda conta possui um extrato, todo caixa pode aceitar um depósito... Todo objeto tem seu próprio estado: Cada conta tem um extrato diferente, cada caixa tem o seu nome... Assim, caixas, clientes, contas, transações podem, cada um, ser representados por uma única entidade no programa, o objeto. 20/42

Objetos e Interfaces Cada objeto pertence a uma classe, que define o seu comportamento e as suas características. 21/42

Classes 22/42

Objetos e Interfaces Depois que uma classe é criada, podem ser criados tantos objetos da classe quanto necessários, que podem ser manipulados como se fossem elementos existentes no problema que está sendo solucionado. Mas como fazer um objeto realizar um trabalho útil? 23/42

Objetos e Interfaces Cada objeto possui métodos (funções) para desempenhar suas atividades. Cada objeto somente pode responder a determinadas requisições. O conjunto de métodos de um objeto é conhecido como sua interface. 24/42

Objetos e Interfaces Lâmpada Lampada Nome da classe UML liga(); desliga() aumenta_luminosidade(); diminui_luminosidade(); Interface Instanciando um objeto e chamando um método: Lampada Luz; Luz.liga(); 25/42

Objetos e Interfaces Que métodos (funções) podem ser chamados? Isso é a interface! Onde esses métodos estão codificados, como são implementados? Isso é a implementação! Geralmente não interessa a quem utiliza o objeto conhecer os detalhes da implementação... 26/42

Interface, Implementação e Encapsulamento Um objeto pode ser encarado como um servidor, programado pelo criador da classe. O cliente do objeto utiliza os métodos por meio de sua interface. O criador da classe expõe o mínimo da interface para o cliente, escondendo o resto. Por quê? Porque se está escondido, pode ser mudado sem que o programa do cliente seja quebrado. Se fosse dado total acesso à implementação interna, o cliente poderia quebrar a integridade do objeto. 27/42

Encapsulamento A estratégia utilizada para garantir que determinadas partes de uma classe não possam ser a- cessadas pelo público em geral é chamada controle de acesso... A interface não apresenta necessariamente todos os métodos de um objeto, mas apenas aqueles que podem ser acessados pelo público em geral, os métodos públicos. Os métodos internos aos objetos são os métodos privados. 28/42

Encapsulamento Videocassete público: Play(); FastForward(); Rewind(); Record();... privado: PosicionaCabecaGravacao(posicao); GiraMotor(velocidade);... Público x Privado 29/42

Encapsulamento 30/42

Reutilizando a Implementação Uma vez que uma classe foi criada e testada, ela pode ser utilizada para auxiliar na implementação de outras classes. Essa é uma das principais vantagens da Programação Orientada a Objetos. 31/42

Reutilizando a Implementação A forma mais simples de reutilização é utilizar um objeto daquela classe diretamente. Exemplos: janela no Windows, matriz em um programa de cálculo, etc... Pode-se, também, utilizar um objeto de uma classe dentro de uma nova classe: Sua classe pode ser composta pelo número e tipo de objetos que se fizerem necessários! Composição 32/42

Reutilizando a Implementação REUTILIZAÇÃO UTILIZAR O OBJETO DA CLASSE DIRETAMETE UM CARRO CONTÉM 4 RODAS, UM MOTOR, UMA LATARIA... UTILIZAR UM OBJETO DE UMA CLASSE DENTRO DE UMA NOVA CLASSE COMPOSIÇÃO VERBOS ASSOCIADOS: CONTER, POSSUIR 33/42

Reutilizando a Implementação Composição Notação UML Carro Videocassete 4 1 1 CabecaDeGravacao ControleDeMotor Roda Motor Lataria Motor CabecaDeLeitura 34/42

Reutilizando a Interface Herança A herança permite a criação de uma hierarquia de classes: classes mais especializadas as classes filhas, herdam propriedades da classe mais geral a classe pai. Pode-se compartilhar automaticamente métodos e dados entre diferentes classes, subclasses e objetos Cria-se uma nova classe programando-se apenas as diferenças entre a classe e a classe pai: a classe filha herda a interface da classe pai, podendo substituí-la quando se espera um objeto da classe pai!!! EXPRESSÃO TÍPICA: É UM TIPO DE... 35/42

Reutilizando a Interface Herança Herança Exemplo 1 Ave é um tipo de Animal. Mamífero é um tipo de Animal. Ave come, dorme, voa e botaovo. Mamífero come, dorme e mama. Uma Ave, ou um Mamífero, podem substituir um Animal, pois são tipos de Animal, e, portanto, possuem a mesma interface base! Que delícia crocante!!! 36/42

Reutilizando a Interface Herança Herança Exemplo 2 Triangle, Square e Circle são tipos de Shape, possuem a mesma interface base, e podem substituir Shape... 37/42

Reutilizando a Interface Herança Herança Exemplo 2 Cada tipo de Shape deve ter o seu próprio método draw, pois cada uma se desenha de modo diferente! Os métodos podem ser sobrescritos nas classes derivadas! Deseja-se utilizar a mesma interface, mas com um comportamento um pouco diferente para a classe derivada. Que delícia crocante de novo!!! 38/42

Objetos Intercambiáveis: Polimorfismo Quando trabalhamos com hierarquias, em muitas vezes queremos tratar um objeto não por seu tipo específico, mas por seu tipo base: isso permite escrever código que não depende do tipo específico e, consequentemente, a adição de novos tipos sem maiores dificuldades: Por exemplo, no caso das Shapes, poderíamos escrever código genérico que as manipulasse, mandando-as se desenharem, por exemplo, sem nos preocuparmos se são triângulos, círculos ou qualquer outra coisa... Adicionar novos tipos é uma das formas mais comuns de estender um programa orientado a objetos para tratar novas situações! 39/42

Objetos Intercambiáveis Polimorfismo Isso é o polimorfismo o que possui várias formas : Propriedade de se utilizar o mesmo nome para métodos diferentes, implementados em diferentes níveis de uma hierarquia de classes. Para cada classe, tem-se um comportamento específico para o método. 40/42

Mensagem Final Não se preocupem demais, no momento atual, com os conceitos: tudo ficará claro depois! 41/42

Importante Esta apresentação é uma adaptação do material originalmente desenvolvido pelo professor Renato Cardoso Mesquita, do Departamento de Engenharia Elétrica da Universidade Federal de Minas Gerais. http://www.cpdee.ufmg.br/~renato/ 42/42