Daniel Wildt

Documentos relacionados
Linguagem de Programação I Apresentação da Disciplina

Levantamento, Análise e Gestão Requisitos. Aula 03

Programação Orientada a Objetos

Orientação a Objetos Parte I. Introdução a POO (Programação Orientada a Objetos)

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

Televisao tamanho tela emitirsom. conectarperifericos

O PARADIGMA ORIENTADO POR OBJETOS

Requisitos de sistemas

Programação Orientada a Objetos JAVA - NETBEANS

Programação Orientada a Objetos

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

ORIENTAÇÃO A OBJETOS Histórico:

Programação em Linguagem C++

Modelo do Mundo Real. Abstração. Interpretação

POO e C++: Herança e Polimorfismo

Definição. Em POO, a abstração é o processo de esconder os detalhes de implementação de uma aplicação.

PADRONIZAÇÃO 10. INTERFACES PADRONIZAÇÃO CONTRATOS

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

2. Introdução à Programação e Análise. Orientada a Objetos

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Programação Orientada a Objetos em Python

Introdução a orientação a objetos

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Orientação a objetos. Objetos ou Instâncias I

Curso de PHP. - Início 22 de agosto - Término 20 de outubro. -Aulas: segunda e quinta-feira -Horário:18h às 20h. -Carga horária do curso: 40h

Introdução à Análise e Projeto de Sistemas

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Introdução a Programação Orientada a Objetos

Programação Orientada a Objetos. Conceitos Básicos

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Programação Orientada a Objetos 2 Flávio de Oliveira Silva, M.Sc.

Curso teórico: Orientação a Objetos. Matemática computacional Marcos Aurelio Wozhiak Jr webzhiak.com.br

Introdução à Orientação a Objetos

Conceitos de Programação Orientada a Objetos

PDS Aula 1.2 Introdução a Java, POO e Composição. Prof. Bruno Moreno

LINGUAGEM DE PROGRAMAÇÃO

PROGRAMAÇÃO ORIENTADA A OBJETOS II -TÉCNICAS DE OO. Prof. Angelo Augusto Frozza, M.Sc.

Conceitos de Orientação a Objetos

Programação I Curso: Sistemas de Informação. Prof.: José Ronaldo Leles Júnior .:

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Introdução à Programação Orientada a Objetos. Programação Estruturada vs Programação Orientada a Objetos

Linguagem de Programação IV Introdução

Herança Tiago Eugenio de Melo

Orientação a Objetos (OO) Java Avançado Revisão do Paradigma de. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Programação Orientada a Objetos

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?

Engenharia de Software. Aula 10 Representação dos Conceitos de Orientação a Objetos. Prof. Me. Rogério Ferreira

Programação Orientada a Objeto

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Reinaldo Gomes Análise/projeto estruturado

C com introdução a OO

GRASP. Nazareno Andrade (baseado em Hyggo Almeida e Jacques Sauvé)

Programação Orientada a Objetos SANTOS, Rafael

Introdução à Computação

Linguagem de Programação III

Classes e Objetos. Sintaxe de classe em Java

Aula 15 Modelagem de Classes de Análise. Análise de Sistemas Prof. Filipe Arantes Fernandes

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Linguagens de Programação Aula 12

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Introdução ao paradigma da orientação a objetos

Conceitos de Programação Orientada a Objetos

Aula II Orientação a Objetos. Pedro Baesse Alves Pereira

Polimorfismo. O que é polimorfismo?

Complexidade do Software

Lista de Exercícios AV1

PROJETO ARQUITETURAL PARTE II: PADRÕES DE PROJETO. Projeto de Programas PPR0001

Informática. Professor: Diego Oliveira. Conteúdo 04: Orientação a Objetos

Curso Profissional de Gestão e Programação de Sistemas Informáticos

Projeto Orientado a Objetos

Classe Abstrata e Interface

Tecnólogo em Análise e Desenvolvimento de Sistemas

Herança. Herança. Herança. Herança. Herança. Programação Orientada a Objetos

PROGRAMAÇÃO I HERANÇA E POLIMORFISMO

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Classes, Métodos e Propriedades

AULA 2 VISÃO BÁSICA DE CLASSES EM PHP

1 Introdução e Conceitos básicos

Sistemas Operacionais (SO)

Capítulo 2. Orientação a Objetos

Laboratório de programação II

CONCEITOS BÁSICOS E MODELO DE PROJETO

Visibilidade e Encapsulamento

Programação Orientada a Objetos

Programação Orientada a Objetos

Conceitos de Orientação a Objetos. Objeto Atributo Classe Método

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

PCS3413 Engenharia de Software e Banco de Dados

Aula 08 Relacionamento entre Objetos. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Programação Orientada a Objetos para Redes de Computadores

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Transcrição:

Orientação a Objetos 1 Daniel Wildt http://danielwildt.blogspot.com

Agenda 2 Orientação a Objetos Classe x Objeto Representação classe Atributos / operações Construtores e Destrutores Liberando memória de objetos Abstração Encapsulação

Agenda 3 Relacionamentos Herança Associação Agregação Composição Polimorfismo Classes abstratas e métodos abstratos Visibilidade Interfaces

Orientação a Objetos 4 Programação Estruturada Uso do Goto / Estruturas para saltos dentro da programação. Código monolítico Programação Modular Divisão em módulos (procedures e funções). Quebra do sistema em pedaços menores.

Orientação a Objetos 5 Programação Orientada a Objetos (POO) Novos conceitos são inseridos na programação Herança: conceitos de classe pai e classe filha Abstração: abstrações do mundo real para mundo computacional Encapsulação: proteger acesso a informações Polimorfismo: facilidades para reuso de código, simplificações de programação.

Orientação a Objetos 6 Programação Orientada a Objetos (POO) Histórico Simula, início da aplicação de conceitos OO. Voltada para processos de Simulação Simula I (62): Linguagem orientada a processos Simula 67: versão OO Link de apoio: http://staff.um.edu.mt/jskl1/talk.html Antecedeu o Smalltalk

Orientação a Objetos 7 Programação Orientada a Objetos (POO) Histórico Smalltalk Linguagem OO desenvolvida na Xerox. Programas são compilados para bytecodes e executados em uma máquina virtual. Criação do conceito de Garbage Collector No Smalltalk-80 o código de bytecodes era compilado para a arquitetura nativa. Idéias que Java e.net hoje implementam. Conceito de dynamictranslation.

Orientação a Objetos 8 Programação Orientada a Objetos (POO) Histórico Smalltalk Tudo é um objeto (everything is a object) Links interessantes: http://www.iam.unibe.ch/~ducasse/freebooks.html http://www.iam.unibe.ch/~ducasse/freebooks/small talkhistoryhopl.pdf http://www.whysmalltalk.com/ http://encyclopedia.thefreedictionary.com/smalltalk %20programming%20language

Orientação a Objetos 9 Programação Orientada a Objetos (POO) Coesão e Acoplamento: conceitos importantes Exemplo: Construir classe Calculadora com operação de somar, que deve retornar o resultado da soma

Orientação a Objetos 10 Programação Orientada a Objetos (POO) Coesão Código não coeso é: implementação do módulo Calculadora e da operação somar. Além de somar envia e-mail para o usuário com o resultado da operação e mostra mensagem na tela com o resultado. Problema: manda email e mostra mensagem em tela, desnecessário para o requisitado

Orientação a Objetos 11 Programação Orientada a Objetos (POO) Coesão Perguntar sempre: Cada entidade e cada funcionalidade realizam o seu trabalho? Ou fazem mais do que devem? Buscar: código mais coeso possível (mais simples possível) Código sendo coeso, facilita a reutilização

Orientação a Objetos 12 Programação Orientada a Objetos (POO) Acoplamento Código acoplado é: programador implementa o módulo calculadora no mesmo arquivo da tela de entrada de dados Problema: a calculadora pode ser reutilizada em outro projeto, mas acaba levando uma tela de entrada de dados desnecessária. Buscar: código menos acoplado possível Codigo menos acoplado facilita a reutilização

Classe x Objeto 13 Classe Representação, abstração do mundo real. Exemplo: Carro, Computador, Caneta, Pessoa. É a representação de uma entidade do sistema real em um modelo computacional Objeto Abstração que se torna realidade. Caneta -> BIC, Carro -> Fusca, Pessoa -> José Silva

Representação de Classe 14 Atributos e operações Para cada representação que definimos, podemos informar atributos (variáveis) e operações (métodos ou ações) que esta representação possui e executa. Exemplo (Pessoa) Atributos: nome, cpf, datanascimento, corolhos, corcabelo. Representam o estado do objeto. Operações: andar, falar, pular, trabalhar, pensar. Representam comportamento.

Representação de Classe 15 Atributos e operações

Construtores e Destrutores 16 Construtor: método de inicialização do objeto. Destrutor: método chamado no momento da liberação do objeto da memória.

Liberando memória de 17 Objetos Diferenciar processos de memória gerenciada e não gerenciada

Abstração 18 Trazer a representação de uma entidade do mundo real para o mundo computacional Ex: Pessoa Nome DataNascimento Altura Peso

Encapsulação 19 Exemplo: Implementação de uma calculadora Pessoa1: Como funciona a função de somar? Pessoa2: Você passa dois parâmetros e eu te retorno o resultado Pessoa1: Mas como é implementado internamente? Pessoa2: Você não precisa saber disto.

Encapsulação 20 Ocultar as especificades de funcionalidades Disponibilizar apenas as informações necessárias para o andamento do trabalho Menor complexidade de entendimento e uso.

Relacionamentos Herança 21 Conceito: Classe A é base de B Conceitos de generalização / especialização Ver exemplos de herança disponíveis na linguagem! Verificar como identificar se um objeto é de determinada classe ou se ele herda de determinada classe Compatibilidade de uso de classes em declarações de objetos

Relacionamentos 22 Associação Associação existente entre duas entidades Cliente possui Pedidos. Um pedido é referente a um cliente.

Relacionamentos 23 Agregação Considerar algo maior pensando na relação todo-parte. Um Carro C possui um Motor M. Se o carro for removido do sistema, o motor que estava sendo desenvolvido pode ser reaproveitado em outro carro.

Relacionamentos 24 Composição Também baseado na relação todo-parte. Neste caso, se o objeto maior for removido, as suas partes filhas serão removidas também. Imagine o caso de um Carro C que possui uma Placa P registrada. Se o carro deixa de existir, a placa não tem mais utilidade dentro do sistema.

Relacionamentos 25 Pensamentos em exemplos: Herança: Pessoa física é um tipo de Pessoa. Associação: Um pedido usa um cliente dentro da sua estrutura. Agregação: Um carro é composto de um Motor, etc.

Polimorfismo 26 Um exemplo: Capacidade de objetos derivados de uma mesma base reagirem de forma diferente Ex: Classe Animal possui operação andar Classe Pessoa derivada de animal, quando andar, vai andar da sua forma Classe Cachorro derivada de animal, quando andar, vai andar da sua forma

Classes abstratas e métodos 27 abstratos Classes base para outras classes Características: Alguns métodos não possuem implementação (filhos devem implementar) Ajuda bastante em processos de polimorfismo Facilita o reuso de código Facilita a padronização de funcionamento

Visibilidade 28 Privado, público e protegido: Público (public): operação e/ou atributo pode ser acessado de outras entidades. Protegido (protected): operação e/ou atributo pode ser acessado pela entidade onde foi definido e pelos filhos. Privado (private): operação e/ou atributo pode acessado apenas pela entidade onde foi definido. Ver visibilidades específicas de linguagem!

Interfaces 29 Contratos que classes podem assinar Imagine a situação: Sistema possui Classes Professor, Aluno. Cliente quer permitir que um professor seja aluno. Como fazer isto no sistema, se muitas linguagens não possuem conceitos de herança múltipla? Solução: Contratos!

Interfaces 30 Solução: Criar um contrato com as operações que um aluno implementa. Criar uma classe derivada de Professor que assina o contrato de aluno. Desta forma se consegue usar conceitos de polimorfismo para resolver o problema. Mais reuso de código Maior padronização

Finalizando... 31 Revisão de conteúdo... Classe vs objeto, tradução do problema de mundo real para o ambiente computacional. Visibilidade de informações. Associações entre objetos