Introdução à programação orientada a objetos com C++ e Java

Documentos relacionados
Coleção UAB UFSCar. Ensino e aprendizagem escolar. algumas origens das ideias educacionais. Pedagogia. Rosa Maria Moraes Anunciato de Oliveira

Coleção UAB UFSCar. Cálculo Numérico. Uma Abordagem para a Educação a Distância. Engenharia Ambiental

Coleção UAB UFSCar. Aprendizagem da docência e profissionalização. elementos de uma reflexão. Pedagogia. Regina Maria Simões Puccinelli Tancredi

Coleção UAB UFSCar. Alfabetização e letramento na fase inicial da escolarização. Pedagogia. Maria Iolanda Monteiro

Coleção UAB UFSCar. Políticas públicas, legislação e organização da escola. Pedagogia. Maria Cecília Luiz Flávio Caetano da Silva

Introdução à Engenharia Econômica

Fenômenos de transportes

As Linguagens Corporais e suas implicações nas Práticas Pedagógicas

Coleção UAB UFSCar. Guia de Estudo de Geociências. Geologia Geral e de Aplicação. Engenharia Ambiental. Adail Ricardo Leister Gonçalves

Coleção UAB UFSCar. Operações Unitárias envolvendo transmissão de calor. Tecnologia Sucroalcooleira. Everaldo Cesar da Costa Araujo

Coleção UAB UFSCar. A Matemática na formação de professores dos anos iniciais. aspectos teóricos e metodológicos. Pedagogia

Introdução à cristalização

Introdução à Engenharia Ambiental

Coleção UAB UFSCar. Pensando fotografia. Pedagogia. Anabela Leandro. Linguagens: Artes II

Gestão e Administração escolar

na análise dos processos químicos

Aprendizagem dialógica

Uma abordagem de Óptica Física e Física Moderna para Engenharia Ambiental

Coleção UAB UFSCar. Custos gerenciais. teoria e prática na agroindústria. Tecnologia Sucroalcooleira

Coleção UAB UFSCar. Introdução à Mecânica Aplicada à Engenharia e à Mecânica dos Sólidos. Engenharia Ambiental. Sydney Furlan Junior

Coleção UAB UFSCar. Tecnologia das fermentações. fundamentos de bioprocessos. Tecnologia Sucroalcooleira. Reinaldo Gaspar Bastos

Microbiologia da fermentação alcoólica

Coleção UAB UFSCar. História da Música Ocidental. uma breve trajetória desde a Pré-História até o século XVII Volume 1.

Monitoramento e Caracterização Ambiental

Termodinâmica Aplicada

Ciências do Ambiente

Metodologia Científica

Educação a Distância

Experimentos Didáticos em Fenômenos de Transporte e Operações Unitárias para a. Engenharia Ambiental

Introdução ao teclado

Relações étnico-raciais em contexto escolar

Comercialização de Produtos Agroindustriais

Guia de Estudos em Impactos Ambientais

Psicologia da Criança e da Educação

Coleção UAB UFSCar. Economia Agrícola. Tecnologia Sucroalcooleira. Hildo Meirelles de Souza Filho Antônio Márcio Buainain

Coleção UAB UFSCar. Física experimental. Engenharia Ambiental. Sérgio de Aguiar Monsanto. Física experimental

História da Música Ocidental

Coleção UAB UFSCar. Língua brasileira de sinais Libras. uma introdução. Pedagogia

Coleção UAB UFSCar. Estatística Aplicada. Engenharia Ambiental. Luis Aparecido Milan

Coleção UAB UFSCar. Produção de etanol a partir da cana-de-açúcar. tecnologia de produção de etanol. Tecnologia Sucroalcooleira

Gestão democrática no cotidiano escolar

Introdução ao Scilab/Scicos

Coleção UAB UFSCar. Teoria e gestão de organizações. Tecnologia Sucroalcooleira. Márcia Regina Neves Guimarães

Coleção UAB UFSCar. Introdução ao controle de processos e à instrumentação usando Scicos. Tecnologia Sucroalcooleira.

Coleção UAB UFSCar. O plural da infância. aportes da sociologia. Pedagogia. Anete Abramowicz Andrea Braga Moruzzi

Coleção UAB UFSCar. Desafios e perspectivas para o setor sucroenergético do Brasil. Tecnologia Sucroalcooleira. Marta Cristina Marjotta-Maistro

Coleção UAB UFSCar. Educação, Sustentabilidade e Economia Solidária. diálogos necessários para um outro mundo possível. Pedagogia

Educação a distância para educação musical 2

Gestão do Conhecimento

Armazenamento e Recuperação da Informação

Coleção UAB UFSCar. Percussão. Educação Musical. Daniel Gohn

Fundamentos de Física 1

Tecnologias Digitais para

Filosofia da Educação

Tecnologia de Produção de Açúcar

Programação Estruturada Orientada a Objetos

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

História da Educação

DISCIPLINA: Programação de Computadores II

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

Programação de Computadores

Introdução à programação orientada a objetos com C++ e Java

Programação de Computadores

Fundamentos de Orientação a Objetos

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

Revisão: linguagens de programação

Fundamentos de Programação 1

Introdução à Orientação a Objetos

Educação a distância para educação musical 1

Laboratório de programação II

Linguagens de Programação

Histórico de Linguagens de Programação

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

Introdução à arquitetura e à organização de computadores

Linguagens de Programação Aula 3

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

Introdução à Engenharia Econômica

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

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Paradigmas de Programação

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

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

Transcrição:

Coleção UAB UFSCar Sistemas de Informação Ednaldo Brigante Pizzolato Introdução à programação orientada a objetos com C++ e Java

Introdução à programação orientada a objetos com C++ e Java

Reitor Targino de Araújo Filho Vice-Reitor Pedro Manoel Galetti Junior Pró-Reitora de Graduação Emília Freitas de Lima Secretária de Educação a Distância - SEaD Aline Maria de Medeiros Rodrigues Reali Coordenação UAB-UFSCar Daniel Mill Denise Abreu-e-Lima Joice Lee Otsuka Valéria Sperduti Lima Coordenadora do Curso de Sistemas de Informação Sandra Abib Conselho Editorial José Eduardo dos Santos José Renato Coury Nivaldo Nale Paulo Reali Nunes Oswaldo Mário Serra Truzzi (Presidente) Secretária Executiva Adriana Silva UAB-UFSCar Universidade Federal de São Carlos Rodovia Washington Luís, km 235 13565-905 - São Carlos, SP, Brasil Telefax (16) 3351-8420 www.uab.ufscar.br uab@ufscar.br EdUFSCar Universidade Federal de São Carlos Rodovia Washington Luís, km 235 13565-905 - São Carlos, SP, Brasil Telefax (16) 3351-8137 www.editora.ufscar.br edufscar@ufscar.br

Ednaldo Brigante Pizzolato Introdução à programação orientada a objetos com C++ e Java 2010

2010, Ednaldo Brigante Pizzolato Concepção Pedagógica Daniel Mill Supervisão Douglas Henrique Perez Pino Equipe de Revisão Linguística Ana Luiza Menezes Baldin André Stahlhauer Andréia Pires de Carvalho Ângela Cristina de Oliveira Jorge Ialanji Filholini Mariucha Magrini Neri Paula Sayuri Yanagiwara Priscilla Del Fiori Sara Naime Vidal Vital Equipe de Editoração Eletrônica Izis Cavalcanti Juliana Greice Carlino Rodrigo Rosalis da Silva Equipe de Ilustração Jorge Luís Alves de Oliveira Thaisa Assami Guimarães Makino Capa e Projeto Gráfico Luís Gustavo Sousa Sguissardi Ficha catalográfica elaborada pelo DePT da Biblioteca Comunitária da UFSCar P695i Pizzolato, Ednaldo Brigante. Introdução à programação orientada a objetos com C++ e Java / Ednaldo Brigante Pizzolato. -- São Carlos : EdUFSCar, 2010. 155 p. -- (Coleção UAB-UFSCar). ISBN 978-85-7600-204-8 1. Programação orientada a objetos (Computação). 2. C++ (Linguagem de programação de computador). 3. Java (Linguagem de programação de computador). 4. Classes e objetos. I. Título. CDD 005.11 (20 a ) CDU 681.32.06 Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou quaisquer meios (eletrônicos ou mecânicos, incluindo fotocópia e gravação) ou arquivada em qualquer sistema de banco de dados sem permissão escrita do titular do direito autoral.

........... Sumário Apresentação............................................... 11 Unidade 1: Introdução 1.1 Primeiras palavras.... 15 1.2 Problematizando o tema.... 15 1.3 Linguagens imperativas................................... 16 1.3.1 Encapsulamento....................................... 17 1.3.2 Visibilidade........................................... 18 1.3.3 Encapsulamento e visibilidade.... 19 1.4 Considerações finais... 19 1.5 Estudos complementares.... 20 Unidade 2: Introdução às linguagens de programação C++ e Java 2.1 Primeiras palavras... 23 2.2 Problematizando o tema.... 23 2.3 A História das linguagens................................. 24 2.4 C++ e Java estrutura básica de um programa... 24 2.5 Considerações finais... 32 2.6 Estudos complementares.... 32

Unidade 3: Introdução à orientação a objetos 3.1 Primeiras palavras... 35 3.2 Problematizando o tema.... 35 3.3 O paradigma OO.... 36 3.4 Classes e objetos... 38 3.5 Elementos de uma classe.... 40 3.6 Diagrama de classes... 41 3.7 Relacionamento entre classes..............................43 3.8 Exemplos... 44 3.9 Considerações finais... 54 Unidade 4: Introdução à sobrecarga 4.1 Primeiras palavras... 57 4.2 Problematizando o tema.... 57 4.3 Sobrecarga de métodos... 58 4.4 Sobrecarga de operadores.... 59 4.5 Exemplos em Java... 65 4.6 Considerações finais... 66 4.7 Estudos complementares.... 67

Unidade 5: Alocação dinâmica de memória 5.1 Primeiras palavras... 71 5.2 Problematizando o tema.... 71 5.3 Revisão.... 72 5.4 Alocação de atributos..................................... 78 5.5 Construtor de cópia.... 79 5.6 Alocação de objetos...................................... 82 5.7 Exemplo em C++......................................... 83 5.8 Considerações finais... 88 Unidade 6: Composição e herança 6.1 Primeiras palavras... 91 6.2 Problematizando o tema.... 91 6.3 Composição............................................. 91 6.4 Herança................................................. 92 6.5 Exemplo em Java... 93 6.6 Exemplo em C++......................................... 96 6.7 Considerações finais... 102

Unidade 7: Polimorfismo 7.1 Primeiras palavras... 105 7.2 Problematizando o tema.... 105 7.3 Polimorfismo paramétrico... 106 7.3.1 Templates em C++... 106 7.3.2 Generics em Java..................................... 109 7.4 Polimorfismo de inclusão................................ 110 7.4.1 Polimorfismo de inclusão em C++........................ 110 7.4.2 Polimorfismo de inclusão em Java... 114 7.5 Considerações finais... 116 Unidade 8: Classes abstratas 8.1 Primeiras palavras... 119 8.2 Problematizando o tema.... 119 8.3 Definição de classes abstratas............................ 119 8.4 Classes abstratas em Java e em C++...................... 120 8.4.1 Exemplos em Java.... 120 8.4.2 Exemplos em C++... 122 8.5 Considerações finais... 122

Apêndice A... 123 Apêndice B... 129 Referências................................................ 153

Apresentação Este livro é para quem já sabe algoritmos e já construiu programas em linguagens como C ou Pascal. O leitor deve, portanto, ter familiaridade com os conceitos básicos de programação, tais como o conceito de variáveis, escopo, entrada e saída de dados, estruturas de seleção, estruturas de repetição, subprogramas (funções e procedimentos), passagem de valores por valor ou por referência, entre outros. Apesar de este livro abordar tais conceitos, não tem como objetivo principal a explicação dos mesmos. O leitor já deve saber, também, que existem várias linguagens de programação (C++, C#, Java, Pascal, Delphi, Fortran, Algol, PL/I, Cobol, Lisp, Prolog só para citar algumas), mas talvez não saiba a razão da existência de tantas linguagens. Algumas foram concebidas por questões de aplicação (para serem científicas ou mais voltadas a transações comerciais ), enquanto outras foram criadas em decorrência do próprio avanço tecnológico. Todas as linguagens têm em comum o fato de terem uma sintaxe e uma semântica bem definida. Podem ser interpretadas ou compiladas e, normalmente, estão relacionadas a um determinado paradigma de programação. Alguns dos paradigmas de programação existentes são: Programação Imperativa (ou Procedural); Programação Orientada a Objetos; Programação Concorrente; Programação Lógica; Programação Funcional. Espera-se que o leitor já tenha tido contato com alguma linguagem representante do paradigma imperativo ou procedural (por incluir procedimentos e funções) e tenha tido oportunidade de implementar programas usando tal linguagem. Exemplos de linguagens do paradigma imperativo ou procedural são C, Pascal, Fortran e PL/I. Também se espera que o leitor saiba o que seja programação estruturada. O conhecimento prévio do que são algoritmos e como elaborá-los, bem como o conhecimento prévio de uma linguagem de programação e dos conceitos de programação estruturada contribuirá para o entendimento dos conceitos de orientação a objetos e das linguagens C++ e Java aqui abordadas. A opção por duas linguagens permitirá que o leitor teste os conceitos de orientação a objetos em ambientes diferentes e verifique que alguns conceitos estão presentes em uma linguagem e não em outra. 11

Os principais objetivos deste livro são: Apresentar ao(à) leitor(a) o paradigma de orientação a objetos e seus principais conceitos; Fornecer conhecimentos sobre as linguagens de programação C++ e Java; Mostrar como os conceitos de programação orientada a objetos podem ser implementados em ambas as linguagens (quando possível); Permitir que o(a) leitor(a) crie aplicativos em Java utilizando os conceitos de orientação a objetos com interface gráfica. Pedirei permissão ao(a) leitor(a) para tratá-lo(a) por você daqui em diante. 12