Linguagem de Programação III



Documentos relacionados
Programação Orientada a Objetos C++

Conceito de classe em C++

Prof. Jhonatan Fernando

Programação aplicada de computadores Andréa Maria Pedrosa Valli

Herança e Polimorfismo de Inclusão

Esta apresentação ensinará os conceitos de Orientação a Objetos com C++, do mais básico para o mais avançado. É suposto que o aluno já tenha

Programação Orientada a Objetos em Java

Programação Orientada por Objectos - C++ jvo

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Introdução a POO. Introdução a Linguagem C++ e POO

Aula 1. // exemplo1.cpp /* Incluímos a biblioteca C++ padrão de entrada e saída */ #include <iostream>

Programando em C++ Histórico da Linguagem C

Técnicas de Programação II

Conceito de classe em C++

Pilhas. Profa Morganna Diniz

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

Análise e Projeto Orientados por Objetos

Orientação a Objetos com Java

Profº. Enrique Pimentel Leite de Oliveira

POO Programação Orientada a Objetos. Classes em Java

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Fundamentos de Programação II. Introdução à linguagem de programação C++

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

DE JAVA AO C++ Prof. Cesar Augusto Tacla

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

Minicurso C++ orientado a objetos

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

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

Java 2 Standard Edition Como criar classes e objetos

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

Técnicas de Programação:

Polimorfismo. Prof. Leonardo Barreto Campos 1

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

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Princípios de programação em Linguagem C++

Programação por Objectos. Java

Módulo 06 Desenho de Classes

Análise de Programação

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Reuso com Herança a e Composiçã

BSI UFRPE Prof. Gustavo Callou

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

OO Engenharia Eletrônica

Na disciplina de Cálculo Numérico, vamos trabalhar com a linguagem C++ e o compilador que vamos usar é o Dev C++.

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Java. Marcio de Carvalho Victorino

Programação científica C++

Sumário. Parte I Filosofia e Modelagem Orientada a Objetos... 23

Módulo 07 Características Avançadas de Classes

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Introdução a Java. Hélder Nunes

C++ e Orientação a Objetos

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Programação com Acesso a BD. Programação com OO Acesso em Java

Expressões. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

Orientação a Objetos

Linguagem de Programação I

PHP INTRODUÇÃO CLASSES E OBJETOS

Programação Avançada

Tópicos em Engenharia de Computação

Introdução à Programação com Classes em C++

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Computação II Orientação a Objetos

Conceitos Básicos de C

3. PARADIGMA ORIENTADO A OBJETOS

Aula 8- Standard Template Library. Arthur Ribacki Gabriel Portal Leonardo Chatain Luiz Fernando Scheidegger Rosália Schneider

Programação Orientada a Objetos em java. Polimorfismo

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

Programação Orientada a Objetos. Encapsulamento

Algoritmos e Técnicas de

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Aula 1 Tipo Abstrato de Dados

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Computação II Orientação a Objetos

Programação e Sistemas de Informação

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

FBV - Linguagem de Programação II. Um pouco sobre Java

Programação por Objectos. Java

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

Laboratório de programação II

Herança. Alberto Costa Neto DComp - UFS

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

Computação e Programação Aula prática nº 5. Enunciados dos problemas

Composição de classes

Implementando uma Classe e Criando Objetos a partir dela

Carlos Eduardo Batista. Centro de Informática - UFPB

Transcrição:

Clique para editar o estilo do subtítulo mestre Linguagem de Programação III

Histórico Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Comparação com Java

Histórico Desenvolvido por Bjarne Stroustrup no Bell Labs, durante a década de 1980. Inicialmente chamado de "C with Classes". Objetivo inicial implementar uma versão distribuída do núcleo Unix, que era escrito em C. 1983 - passou a se chamar C++. 1985 - lançamento da 1º edição do livro "The C++ Programming Language", contendo referências para a utilização da linguagem.

Histórico 1990 - lançamento do livro "The Annotated C+ + Reference Manual", base para o futuro padrão. 1990 - Criação da Standard Template Library (STL), por Alexander Stepanov. 1993 - Padronização da linguagem pelo comitê ANSI/ISO

#include <iostream> using namespace std; void main(){ cout << "Hello World!" << endl; cout << "Welcome to C++ Programming" << endl; }

Encapsulamento Modificadores public, private e protected. Atributos private ainda podem ser acessados por métodos alheios com permissão explícita para tanto (utilizando a palavra reservada friend). Pode ser contornado pelo uso de operações de baixo nível. Uso de ponteiros para manipulação de variáveis private (má prática de programação).

Herança Conceito de herença pública, privada e protegida. Uso de classes abstratas. Permite herança múltipla. Problemas relacionados ao uso de herança múltipla.

Tratamento de classes e objetos esquema basico: class class_name{ access_specifier_1: member1; access_specifier_2: member2;... }

Exemplo 1(métodos/funções): #include <iostream> using namespace std; class CRectangle { int x, y; public: void set_values (int,int); int area () {return (x*y);} }; void CRectangle::set_values (int a, int b) {x = a; y = b; } int main () { CRectangle rect; rect.set_values (3,4); cout << "area: " << rect.area(); return 0; }

Contrutores e destrutores class CRectangle { int *width, *height; public: CRectangle (int,int); ~CRectangle (); }; CRectangle::CRectangle (int a, int b) { width = new int; height = new int; *width = a; *height = b; } CRectangle::~CRectangle () { delete width; delete height; }

Complemento: Problemática herança múltipla - Quando um objeto da subclasse tentar referenciar diretamente o membro homônimo das superclasses, o compilador não saberá a qual classe está se referindo, causando a ambigüidade.

Complemento: Usando herança múltipla

#include <string.h> #include <iostream> using namespace std; class ClasA { protected : char nome[31]; public : void mostrar () {cout << "\nnome na Classe\t: " << nome;} }; class ClasB1 : public ClasA { public : ClasB1 (char * n = "Classe B1") {strcpy(nome,n);} void mostrar() {ClasA::mostrar();} }; class ClasB2 : public ClasA { public : ClasB2(char * n = "Classe B2") {strcpy(nome,n);} void mostrar() {ClasA::mostrar();} }; class ClasC : public ClasB1, public ClasB2 { public : void saida () { ClasB1::mostrar(); ClasB2::mostrar(); } };

Resultado Impresso: Nome na Classe: Classe B1 Nome na Classe: Classe B2 Resumindo, a duplicidade significa a existência de dois espaços em memória para um mesmo atributo ou a existência de dois caminhos para a chamada de uma função

Polimorfismo Polimorfismo estático. Sobrecarga de métodos, construtores e operadores.

Polimorfismo Polimorfismo dinâmico. Funções Virtuais Puras.

Funções virtuais(complemento) Usado para facilitar a modificação de metodos a partir de classes derivadas(exemplo polígono). Classes abstratas(complemento) Muito similar a virtual, a diferença é que se pode deixar métodos abstratos sem implementação alguma(função virtual pura)

Diferenças com Java -Não precisa ser parte de classe alguma para Executar uma função -Necessário uso do destrutor

Diferenças com Java(Sintaxe): -Declaração de classes: C++ Java -Herança: C++ Java class Bar {}; class Bar {} class Foo : public Bar {... }; class Foo extends Bar {... }

Diferenças com Java(Sintaxe): Encapsulamento: C++ public: void foo(); void bar(); Java public void foo(); public void bar(); Booleans: C++ bool foo; Java boolean foo;

Diferenças com Java(Sintaxe): -Variaveis finais(constantes): C++ const int x = 7; Java final int x = 7; -Vetores C++ int *x = new x[10]; Java int[] x = new int[10];