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?

Documentos relacionados
Programação Orientada a Objetos

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

Conceitos Básicos. SCC0504 Programação Orientada a Objetos. Luiz Eduardo Virgilio da Silva ICMC, USP

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

Daniel Wildt

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

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

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos

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

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

Modelagem Orientada a Objeto

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

POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos. POO Paradigma Orientado a Objetos

Requisitos de sistemas

Orientação a Objetos (OO)

O PARADIGMA ORIENTADO POR OBJETOS

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

Desenvolvimento de Aplicações Desktop

Programação Orientada a Objetos

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

Banco de Dados I Generalização/Especialização

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

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

SISTEMA DE INFORMAÇÃO Modelo Conceitual. Prof. Luiz Fernando Laguardia Campos FMS

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Conceitos de Orientação a Objetos

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

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

Complexidade do Software

Prof. Fernando V. Paulovich 2 de agosto de SCC Programação Orientada a Objetos

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

POO e C++: Herança e Polimorfismo

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

Aula 2 POO 1 Introdução. Profa. Elaine Faria UFU

Programação Orientada a Objetos. Prof. MsC Sílvio Bacalá Júnior

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

Programação Orientada a Objetos

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

Análise e Projeto de Sistemas

Programação Orientada a Objetos em Python

Programação Orientada a Objetos JAVA - NETBEANS

Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos

Programação Estruturada Orientada a Objetos

Estilos Arquiteturais

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

1 Introdução e Conceitos básicos

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

Análise e projeto de sistemas

Os princípios do desenho orientado a objetos

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

Sumário. BD Orientado a Objetos

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

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

Prof. Me. Sérgio Carlos Portari Júnior

Análise de Sistemas 4º Bimestre (material 3)

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

Java para Desktop. Programação Orientada à Objetos 2 JSE

IFSC/Florianópolis - Programação Orientada a Objetos com Java - prof. Herval Daminelli

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

Capítulo 2. Orientação a Objetos

Linguagem de Modelagem Unificada UML

C com introdução a OO

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

Aula 01 Conceito de Banco de Dados e SGBD

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

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Linguagens de Programação Aula 12

Conceitos de Programação Orientada a Objetos

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

UNIVERSIDADE PAULISTA - UNIP ICET INSTITUTO DE CIÊNCIAS EXATAS E TECNOLÓGIA

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

Banco de Dados Modelagem Conceitual de Dados. Prof. Edjandir Corrêa Costa

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

Introdução à Programação Orientada a Objetos em C++

Laboratório de programação II

Modelagem semântica permite aproximar o modelo obtido do mundo real Exemplo de modelos:

Transcrição:

Programação Orientada a Objetos em C++ Renato Cardoso Mesquita Departamento de Eng. Elétrica da UFMG renato@cpdee.ufmg.br 2. Introdução à Programação e Análise.......... Orientada a Objetos 2.1. O que é a Programação Orientada a Objetos? 2.1.1. Introdução Sistemas computacionais cada vez maiores e mais complexos; Técnicas tradicionais de análise e projeto não funcionam; Novas técnicas precisam ser desenvolvidas e exploradas. Imagine o que aconteceria se um fabricante de automóveis que fosse projetar um novo carro fosse obrigado a projetar também todos os parafusos deste carro???? 2.1.2. O que são objetos?

Introdução à POO Pg. 2 Como efetivar o aumento da produtividade em software? Olhar a indústria de hardware, que tem produtividade altíssima Lei de Morgan: " O número de componentes em um CI dobra a cada dois anos" em 1980, algumas centenas: hoje, 10 milhões Hardware: REAPROVEITAMENTO DE ESFORÇOS Peças, componentes padronizados, fabricados por vários fornecedores, baratos, testados por diversos usuários. Reaproveitamento de projetos. Chip: fabricantes utilizam chips sem saber o que tem dentro: conhecem a Interface e o Comportamento. META: CHIP DE SOFTWARE : montar sistemas de software a partir de subsistemas menores, com maior facilidade que na programação estruturada Orientação a Objetos OBJETO= CHIP DE SOFTWARE. Maior reaproveitamento de código, menor manutenção, menor código, não se reinventa a roda toda vez que se constrói um programa. 2.1.3. Histórico: Década de 60: primeiras idéias, Linguagem SIMULA; Década de 70: linguagem SMALLTALK; Década de 80: C++ e outras. C++: adiciona à linguagem C a Programação Orientada a Objetos. (AT&T, Bjarne Stroustrup). 1998: padronização pela ANSI 2.1.4. Comparação com outros enfoques

Introdução à POO Pg. 3 Análise Estruturada e funcional Programa é dividido em um conjunto de funções e dados As funções agem sobre os dados Cada função tem de 10 a 100 linhas Decomposição funcional: força o programador a fixar atenção muito mais nos procedimentos que nos dados Enfoque estruturado x Enfoque Orientado a Objetos: Estruturado: Ênfase nos procedimentos, implementados em blocos estruturados, com comunicação entre procedimentos por passagem de dados; Enfoque OO: Dados e procedimentos fazem parte de um só elemento básico (objeto ou classe). Os elementos básicos comunicam-se entre si, caracterizando a execução do programa Dados e procedimentos ENCAPSULADOS em um só elemento. Programação Estruturada Programação Orientada a Objetos DADOS FUNÇÕES Atributos (dados) Objeto Métodos (Funções) 2.2. Mecanismos Básicos da Análise Orientada a Objetos 2.2.1. Objeto: Entidade que formaliza o modo pelo qual compreendemos algo no domínio de um problema; Em um objeto estão encapsulados os dados (atributos) e os procedimentos (serviços ou métodos) exclusivos dele. Os procedimentos são aplicáveis aos dados residentes no objeto. Exemplo 1: Objeto funcionário Abravanel dos Santos. Atributos: nome, endereço, data de admissão, identidade, CPF...

Introdução à POO Pg. 4 Procedimentos: Consulta endereço, aumenta salário, paga comissão,... Exemplo 2: Objeto Matriz A Atributos: Linhas, colunas, elementos da matriz. Serviços: inicialização, leitura, multiplicação por um escalar, inversão, multiplicação por um vetor, etc... Exemplo 3:... Um objeto possui estado, comportamento e identidade Estado: valores de atributos Comportamento: Definido pelos métodos (como o objeto age e reage); Identidade: Aquilo que diferencia um objeto de outro 2.2.2. Classes: Descrevem um conjunto de objetos semelhantes. Exemplo: Abravanel pertence à classe dos funcionários: todos funcionários possuem nome, CPF,..., todos têm comportamento definido pelos métodos que compartilham, etc. Qual a diferença entre classes e objetos? Objeto é uma entidade concreta e a classe é uma abstração. Ex: Números inteiros, matrizes, Números complexos, automóveis, árvores, casas, cidades, países, etc... Programação: definir uma classe significa formalizar um tipo de dados e todas as operações associadas a este tipo. Declarar objetos significa criar variáveis do tipo definido. Ex: typedef struct { char nome[51]; Funcionario empregado1; char endereco[81]; float salario; } Funcionario;

Introdução à POO Pg. 5 Funcionário é um tipo abstrato de dados: especificamente uma struct (ainda não é uma classe, pois não são definidos serviços para ela) Os objetos são também denominados instâncias de uma classe; Exemplo: O meu Uno-Mille é uma instância da classe automóvel. Uma classe possui dados que definem suas propriedades (atributos) e os procedimentos (serviços) que devem ser executados sobre estes dados. A eles dá-se o nome de membros de uma classe. Os atributos são os dados ou informações do objeto ou da classe. Existem atributos de objetos e atributos de classe. Exemplos de atributos de objetos: Funcionário: nome, endereço, telefone, CPF,...; Carro: nome, marca, ano, cor,...; Livro: autor, editora, ano,... Atributos de classe: São menos freqüentes que os atributos de objetos. Exemplo: Funcionário: número de funcionários da loja. Serviços: Implantados como funções colocados no nível do objeto ao qual se relacionam. Acesso aos membros: público, protegido, privado (veremos mais tarde com detalhes...). Mensagens: São os pedidos enviados a um objeto, afim de que ele desempenhe algum serviço. A comunicação entre objetos se faz através destas mensagens. Protocolo: é o conjunto de mensagens que um objeto suporta. Define a maneira como um objeto interage com o mundo

Introdução à POO Pg. 6 2.2.3. Herança Permite modelar uma hierarquia entre classes: classes mais especializadas (classes filhas) herdam propriedades da classe mais geral (classe pai) Pode-se compartilhar automaticamente métodos e dados entre diferentes classes, subclasses e objetos. Criar uma nova classe programando somente as diferenças desta para a classe pai. Exemplo: Loja comercial Pessoa Nome Endereço Funcionário Data de Admissão Salário Cliente Data de Compra Lista de compra

Introdução à POO Pg. 7 Herança múltipla: quando a classe derivada possui características herdadas de duas ou mais classes base. Exemplo: sistema com interface gráfica associada à manipulação de uma base de dados. Biblioteca gráfica + biblioteca de manipulação de bancos de dados, baseadas em classes: classes do nosso programa construídas herdando as características de interesse das classes de ambas bibliotecas. A herança é uma das responsáveis pela facilidade de reaproveitamento de código da POO. Precisamos fazer uma implementação semelhante a uma anterior: derivamos uma classe, programando as diferenças e reaproveitando o código útil da classe base. 2.3. Conceitos chave da Análise Orientada a Objetos 2.3.1. Abstração 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. Em AOO a Abstração se faz por abstração de entidades (atributos) e de ação (métodos). A técnica usada é encapsular dados e procedimentos em um tipo de dado abstrato (objeto).

Introdução à POO Pg. 8 2.3.2. Encapsulamento: A idéia por trás do Encapsulamento é a de que a utilização de um sistema orientado a objetos não deve depender de sua implementação interna, e sim de sua interface A abstração define a Interface da classe, ou seja, a forma como ela se relacionará com as demais entidades do sistema. A Implementação definirá como a abstração será representada (o código). Este não deve ser visível às entidades que usarão a classe, por ser exclusivamente do interesse da própria classe. 2.3.3. Polimorfismo Funcionário nome, data de admissão, turno, horas extras, salário base, faltas, número de dependentes,... consulta, alteração, cálculo do salário líquido, impressão,... O que possui várias formas. Propriedade de se usar 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. Exemplo: Método draw para hierarquia de objetos gráficos. O polimorfismo é um dos responsáveis pela facilidade de extensão de um programa orientado a objetos: para se efetivar uma extensão de um programa que utiliza polimorfismo, basta derivar novas subclasses de uma classe herdada, programando as modificações na nova classe. 2.3.4. Modularidade Programas grandes e complexos: separação de conjuntos de módulos, cada um contendo classes com independência de funcionamento, podendo ser compilados independentemente. Separação entre interface (.h) e implementação (.cpp ou.cc)

Introdução à POO Pg. 9 Modularizar consiste em decidir onde empacotar fisicamente classes e objetos presentes na estrutura lógica do programa. 2.3.5. Persistência e tipificação: Objetos persistentes são aqueles que permanecem existindo mesmo após o término da execução do programa. Associados à persistência estão o gerenciamento dinâmico da memória e o armazenamento de objetos em bases de dados. Característica desejável em um modelo OO é a capacidade de distinguir os diferentes tipos de classe. Uso de um objeto de uma classe onde previa-se o uso de objeto de outra só permitido em condições controladas (conversões explícitas). 2.3.6. O que encontrar em um modelo OO? Abstração, Encapsulamento, Modularidade e Polimorfismo são essenciais; Tipificação e persistência são desejáveis, mas não essenciais. 2.4. Definição de estruturas e conexões: Como as classes que construímos são definidas e interagem em um sistema orientado a objetos? 2.4.1. Estruturas: Forma de ligação entre duas classes 2.4.1.1. Estrutura Generalização/Especialização: uma classe mais genérica divide-se em subclasses mais especializadas. Bens Móvel Imóvel Veículo Utensílio Terra Construção Pesado Leve Doméstico Profissiona l Lote Sítio Casa Apartamento

Introdução à POO Pg. 10 Serviços e atributos definidos acima de uma classe podem ser compartilhados por classes derivadas. A estrutura generalização/especialização pode ser definida por uma estrutura É um tipo de. Casa é um tipo de construção; Imóvel é um tipo de bem. 2.4.1.2. Estrutura todo parte: Também chamada de agregação/decomposição. Em uma estrutura todo/parte há um agrupamento de subclasses para formar uma classe mais global Exemplo: Um livro tem um ou mais autores; um automóvel possui um motor, 4 rodas, uma lataria, etc... Existe uma cardinalidade nas ligações 2.4.2. Conexões de Ocorrência: Relações mais fracas que na estrutura todo/parte. Exemplo: uma disciplina tem n alunos. Um aluno cursa m disciplinas. Não se pode dizer que disciplina contém alunos, pois nem todos os atributos de aluno interessa a disciplina conexão de ocorrência. Exemplo: Cliente e produto da loja. 2.4.3. Conexão de mensagem: Ligação entre objetos na qual o objeto emissor envia uma mensagem ao objeto receptor, a fim de que este realize algum processamento Exemplo: A classe administração precisa saber o número de alunos em cada disciplina: ela envia à classe disciplina uma mensagem solicitando os números.

Introdução à POO Pg. 11 Classe-&-Objeto Nome (Seção do Topo) Classe Classe-&-Objeto Atributo 1 Atributo 2 Serviço 1 Serviço 2 Atributos (Seção Média) Serviços (Seção Inferior) Atributo 1 Atributo 2 Serviço 1 Serviço 2 Classe 1 1 Assunto 2 2 Generalização Todo Estrutura Gen-Espec Estrutura Todo-Parte 1,m 1,m 1 1 Especialização 1 Especialização 1 Parte 1 Parte 2 1 1 2 2 Classe-&-Objeto Classe-&-Objeto 1 Conexão de 2 1 Ocorrência 1,m Emissor Conexão de Mensagem Receptor Notação gráfica para Análise Orientada a Objetos.