Programação de Computadores

Documentos relacionados
Panorâmica da 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

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

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

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

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

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

Introdução a orientação a objetos

Desenvolvimento de Aplicações Desktop

Conceitos de Programação Orientada a Objetos

Aula 4 Encapsulamento e Relacionamento Cleverton Hentz

INTRODUÇÃO A POO. Programação Orientada a Objetos Flávio de Oliveira Silva 6. PROCEDIMENTAL (Algorítmica)

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

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

O PARADIGMA ORIENTADO POR OBJETOS

Fundamentos de Programação

Conceitos de Programação Orientada a Objetos

Programação Orientada a Objetos

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

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Programação Orientada a Objetos

Daniel Wildt

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

Introdução à Orientação a Objetos

Prof: Ricardo Quintão Site:

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

Programação Orientada a Objetos

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

Unidade: Classes Abstratas, Polimorfismo, Sobreposição e Interfaces

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

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

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

Engenharia de Software Projeto de software

ACH2002. Orientação a Objetos

Unidade: Introdução à POO (Programação Orientada a Objetos)

Linguagens de Programação Aula 12

Classes e Objetos. Sintaxe de classe em Java

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

3. Linguagem de Programação C

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

[Linguagem de Programação 3] [Aula 01] [Gustavo Yoshio Maruyama]

Técnico em Informática. Web JavaScript. Profª Ana Paula Mandelli

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

MÓDULO 8 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10

Introdução à Orientação a Objetos em Java

Programação Estruturada Orientada a Objetos

Televisao tamanho tela emitirsom. conectarperifericos

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

Orientação a Objetos (OO)

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

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

PROGRAMAÇÃO I. Introdução

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

C com introdução a OO

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

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

Introdução aos Algoritmos

Linguagem de Programação III

Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos

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

Introdução aos Algoritmos

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

Auto-Referenciamento e Herança

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

Herança Tiago Eugenio de Melo

POO e C++: Herança e Polimorfismo

Programação Orientada a Objetos JAVA - NETBEANS

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Linguagem de Programação IV Introdução

Programação I 2º Bimestre (material 1)

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

Linguagem de Programação I

Orientação a objetos Disciplina: Linguagens de Programação. Prof. Alexandre Cassimiro Andreani

LINGUAGEM, TIPOS DE USUÁRIOS DE SGBD E MODELOS DE DADOS

Computação II Orientação a Objetos

Introdução. Lições da década de 80. Realidade atual

Laboratório de programação II

Programação Orientada a Objetos

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

Programação Orientada a Objetos para Redes de Computadores

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

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

Professor Leonardo Cabral da Rocha Soares Lattes:

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

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

MÓDULO 10 INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA POR OBJETOS O QUE É A PROGRAMAÇÃO ORIENTADA POR OBJETOS 10

Orientação a Objetos AULA 06

Técnicas de Programação

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

Laboratório de programação II

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Aula 13 Tratamento de Exceções. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

LINGUAGEM C: ARRAY: VETORES E MATRIZES

Linguagem de Programação III

VETORES Motivação AULA 19

PROGRAMAÇÃO I INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

Transcrição:

Programação de Computadores Objetivo: Como programar em C++, uma linguagem de programação que suporta Programação Orientada a Objetos Maria da Graça Brasil Rocha Programação de Computadores 1

Introdução! Pq Programação Orientada a Objetos?! Pq não usar outras linguagens tradicionais como C ou Pascal?! Quais são as características da POO?! Conceitos chave: objetos e classes. O que significam?! Quais as relações entre C++ e C? Programação de Computadores 2

Pq POO?! Por conta das limitações impostas por outros paradigmas de programação.! Limitações das linguagens procedimentais, tais como, Pascal, C, Fortran. Nessas linguagens, cada comando diz ao computador para fazer alguma coisa.! Ex: Pegue a entrada, adicione um certo valor, divida por 6 e mostre o resultado => lista de instruções! Programa pequenos-> nenhuma organização! Programas grandes-> quebra em pequenas unidades-> funções e subrotinas -> Uma das bases da Programação Estruturada. Programação de Computadores 3

Problemas com Programação Estruturada! Problemas aparecem quando os programas são grandes e complexos. Ocorre por conta do paradigma e não das pessoas envolvidas.! São dois problemas fundamentais:! Funções tem acesso irrestrito aos dados globais! Funções e dados não relacionados, a base dos paradigma procedimental, fornecem um modelo muito ruim do mundo real! Vamos examinar esses problemas no contexto de um programa gerenciador de estoque. Programação de Computadores 4

! Dado importante : a coleção de itens em estoque! Funções que acessam o dado: entrada de um novo item, mostra um item, modifica um item, etc...! Nas funções e Procedimentos em Pascal existem dois tipos de dados:! locais, que estão dentro do subprograma e são de uso exclusivo do mesmo;! globais (que deve ter sido enfaticamente frisado pelo professor de laboratório de programação que não deveria ser usado) que podem ser acessados e modificados por qq subprograma. Programação de Computadores 5

variáveis globais acessível por qq procedimento ou função acessível somente pela função A variáveis locais acessível somente por B variáveis locais Função A Procedimento B Programação de Computadores 6

Paradigma de programação procedimental Dados Globais Dados Globais Dados Globais Função Função Função Função Um grande número de potenciais conexões entre funções e dados, que pode causar diversos problemas. Programação de Computadores 7

Problemas Gerados! Torna a estrutura do programa difícil de conceituar.! O programa é difícil de ser modificado. Um mudança em um dado global pode obrigar a reescrita de todas as funções que o acessa. Por ex., no nosso programa de estoque, se resolvermos modificar o código de produto, todas as funções que acessam o código devem ser modificadas. Nem sempre é fácil identificar em quais funções esse código está sendo usado, o que pode levar a erros. Lembrem-se do comentado Bug do milênio. Programação de Computadores 8

Modelando o Mundo Real! No mundo real trabalhamos com objetos, tais como pessoas e carros. Esses objetos tem atributos e comportamentos! Atributos ou características:! pessoas-> cor dos olhos, cargo, etc..! carros-> cavalos, quantas portas, etc... Atributos são equivalentes aos dados no programa, eles tem valores específicos, tais como, olhos azuis (pessoas) e quatro( portas ) Programação de Computadores 9

! Comportamento: alguma coisa que um objeto no mundo real faz, em resposta a um estímulo.! Se vc solicitar para os seus pais um aumento de mesada, que resposta obterá? Sim ou NÃOOOO! Se frear um carro, espera-se que ele pare...! Dizer alguma coisa ou parar são exemplos de comportamento.! Comportamento é como uma função, você chama uma função para fazer alguma coisa e ela faz. Programação de Computadores 10

Mais um problema...! Dificuldade de criar novos tipo de dados.! Temos os tipos pré construídos ( built-in ) como: inteiros, reais, caracteres etc. Mas se quisermos por exemplo trabalhar com números complexos, coordenadas bidimensionais ou datas?! Com LOO isso pode facilmente ser construído-> extensibilidade Programação de Computadores 11

A POO! Idéia fundamental das LOO => combinar em uma única unidade, dados e as funções que operam nesses dados! Funções são chamadas Funções membro e fornecem a forma de acessar os dados! Se queremos ler um dado de um objeto=>chamamos uma funções membro que fará essa operação e retornará o valor solicitado.! O dado é escondido => seguro de modificações acidentais. Programação de Computadores 12

! Os dados e suas funções são encapsulados em uma única entidade.! Encapsulamento e esconder dados são os termos chave na descrição da LOO.! Se queremos modificar um dado de um objeto, temos que conhecer exatamente qual das funções executa o que queremos! Um programa em C++ consiste de um número de objetos que se comunicam através da chamada de funções membro. Programação de Computadores 13

Organização de um programa OO objeto dados Função membro Função membro objeto dados objeto dados Função membro Função membro Função membro Função membro Programação de Computadores 14

! Empresa=> pessoas não trabalham um dia vendo problemas de pessoal, no outro na folha de pagamento e depois em vendas => departamentos cada um com suas atribuições e seu próprio pessoal.! Objetos=> departamentos (vendas, pessoal e financeiro) com seus dados próprios. Cada departamento é controlado pelo seu pessoal.! Essa divisão (departamentos) torna mais simples compreender e controlar a empresa, e ajuda a manter a integridade da informação usada na empresa.! Se o gerente de vendas quer saber por exemplo, o total dos salários pagos em uma determinada regional, ele não vai até o departamento financeiro e mexe nos arquivos procurando a informação. Ele manda um memorando (mensagem) ao departamento de pessoal solicitando a informação, espera a pessoa responsável acessar os dados e responder.! Garantia que os dados serão corretamente acessados e não serão estragados por acesso indevido. Programação de Computadores 15

Analogia com uma empresa Depto de Vendas Dados de vendas Gerente de vendas Secretária Depto Pessoal Depto de Finanças Dados dos funcionários Gerente de pessoal Funcionários do setor Dados financeiros Diretor de finanças Assistente financeiro Programação de Computadores 16

Características das LOO! Objetos => Dado um problema, não nos preocupamos mais em como dividir em pedaços e sim em como dividir em objetos! Que espécie de coisas podem ser objetos em um POO?! Limitado pela imaginação do projetista, mas existem algumas categorias típicas para começar a acostumar com essa divisão. Programação de Computadores 17

! Objetos Físicos:! Carros em uma simulação de fluxo de trânsito! Componentes elétricos em um projeto de circuito! Países num modelo econômico! Aviões num sistema de controle aéreo.! Elementos num ambiente de programação! Janelas! Menus! Objetos gráficos (linhas, retângulos, círculos)! Mouse, teclado, discos, impressoras. Programação de Computadores 18

! Construções que armazenam dados! Arranjos! Pilhas! Listas Encadeadas! Árvores Binárias! Entidades Humanas! Empregados! Estudantes! Clientes! Pessoal de Vendas Programação de Computadores 19

! Coleção de dados! Estoque! Arquivo de pessoal! Um dicionário! Tabela de latitude e longitude das cidades no mundo! Dados definidos pelo usuário! Data! Ângulos! Números complexos! Pontos no plano Programação de Computadores 20

! Componentes num jogo! Carros num jogo de corrida! Posições num jogo de tabuleiro (xadrez, dama)! Animais numa simulação ecológica! Adversários e aliados num jogo de aventura! A identificação entre objetos num programa e objetos no mundo real é o resultado da combinação de dados e funções. Programação de Computadores 21

Classes! Em POO dizemos que os objetos são membros de classes. O que isso significa?! Vamos examinar uma analogia. O tipo de dado inteiro é definido em C++ como int. Podemos declarar muitas variáveis como tipo int em um programa. A declaração tem a seguinte forma: int dia, cont, n;! De forma semelhante definimos os objetos de uma mesma classe. A classe é o modelo que especifica quais são os dados e as funções que terão os objetos da classe.! Definir a classe não cria qualquer objeto, assim como a existência do tipo int não cria nenhuma variável. Programação de Computadores 22

! Outra analogia: Prince, Madonna, Sting, Michael Jackson são membros de uma classe de músicos roqueiros.! Não existe nenhuma pessoa chamada músico roqueiro, mas pessoas específicas com nomes específicos são membros da classe roqueiro e, possuem características comuns. Programação de Computadores 23

Herança! Usamos o conceito de classe dividida em subclasses.! Classe animal => subclasses: mamíferos, anfíbios, insetos, pássaros, etc...! Classe veículos => subclasses: carros, caminhões, ônibus e motos.! Princípio de divisão: Cada uma das subclasses compartilham características comuns com a classe da qual elas são derivadas.! Carros, caminhões, ônibus e motos=> todos tem rodas e motor => características de veículos. Além disso, cada subclasse tem suas particularidades. Ônibus: assentos para várias pessoas. Caminhões: espaço para transportar mercadorias... Programação de Computadores 24

Representação gráfica da Herança Classe Base Característica A Característica B Característica Característica A Característica B Característica Característica C Característica Característica A Característica Característica B Característica Característica D Característica Característica E Classes Derivadas Característica Característica A Característica B Característica Característica F Programação de Computadores 25

Reutilização! Classe criada e testada pode ser distribuída para outros usuários para ser usada em seus programas-> similar ao uso de biblioteca de funções em linguagens procedurais! em LOO temos a extensão do conceito de reutilização através da herança, ou seja, sem modificar a classe já existente, adiciona novas características e capacidades. Programação de Computadores 26

Exemplo: "Alguém escreveu uma classe que cria um sistema de menu do tipo do usado no compilador Borland C++ ou Pascal "Precisamos de um sistema de menu que tenha a capacidade de habilitar e desabilitar algumas opções "Criamos uma nova classe que herda todas as capacidades existentes no sistema de menu já desenvolvido e adicionamos a capacidade de habilitar e desabilitar as opções desejadas "Conseqüências: tempo de desenvolvimento menor, maior retorno de investimento e maior segurança Programação de Computadores 27

Criação de novos tipos de dados! LOO dá uma forma conveniente de construção de novos tipos de dados! Exemplo: Sistema que trabalha com coordenadas (x e y)! é possível escrever expressões aritméticas do tipo : posicao1=posicao2 + origem;! posicao1, posicao2 e origem são objetos de uma classe coordenadas que tem como dados duas posições uma representado a coordenada x e outra a coordenada y Programação de Computadores 28

Polimorfismo e Sobrecarga! Sinal de = e operador + usados no exemplo anterior, não operam da mesma forma que por exemplo a soma de dois valores inteiros! Como operam?! A classe coordenadas deve definir novas operações para esses operadores, através de funções membros da classe! Polimorfismo-> uso de operadores ou funções de diferentes maneiras (uma coisa com várias formas distintas).! Sobrecarga-> capacidade dada a um operador para trabalhar com tipos adicionais de dados! Sobrecarga é uma espécie de polimorfismo Programação de Computadores 29

Relação entre C e C++ Linguagem C++ Características usadas para implementar POO Linguagem C Características comuns entre C e C++ O u t r a s caracterísitcas úteis Caracterísitcas não usadas normalmente em C++ Programação de Computadores 30

Objetivos e abordagem que usaremos! Começar a escrever programas em C++ o mais rápido possível! Muitas coisas da linguagem C++ são herdadas da linguagem C.! Toda a estrutura do C++ é orientada a objetos, mas precisamos conhecer aspectos procedimentais de C para escrevermos por exemplo as funções membros das classes.! Vamos inicialmente tratar os aspectos tradicionais da linguagem C++ que também são encontradas na linguagem C => variáveis, E/S, estruturas de decisão e repetição e tipos de dados. Programação de Computadores 31

Resumo! POO é uma forma de organizar programas! A ênfase é no modo como os programas são projetados não nos detalhes do código.! Programas OO são organizados em torno de objetos que contem dados e funções que atuam nos dados! A classe é um modelo para os objetos! Herança permite que uma classe seja derivada de uma já existente. A classe derivada tem todos os dados e funções da classe mãe, mas adiciona seus próprios.! Herança permite que usemos uma mesma classe em vários programas => reutilização. Programação de Computadores 32