Aula prática 13 Orientação a Objetos – C++ Parte 1

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 11 Criado por Frederick H. Colclough, Colorado Technical University Compilação Separada.
Advertisements

ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
C/C++ para Sistemas Operacionais Professor: André Luis Meneses Silva /msn: Página:
Introdução à Programação Orientada à Objetos Prof. Daniel Merli Lamosa Maio de 2002.
PHPOO Erick Souza. Conceitos de Orientação a Objetos Objeto é um conceito ou item(concreto ou abstrato). Software orientado a objetos Uma classe é uma.
Prof. Thiago Pereira Rique
Algoritmos e Estrutura de Dados I
INF Computação Gráfica
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Políticas Curso de aprofundamento em linguagem C.
LPG - I: Alocação Dinâmica de Memória - Ponteiros
Análise Léxica Supondo o trecho de programa abaixo:
Curso de C/C++ Avançado
Centro Integrado de Tecnologia da Informação
Centro Integrado de Tecnologia da Informação
Classes e objetos P. O. O. Prof. Grace.
Prof.° Jean Daniel Henri Merlin Andreazza Estrutura de Dados
Aula prática 12 Listas Encadeadas
Professor Reverton de Paula Faculdade Anhanguera de Indaiatuba
Alocação Dinâmica de Memória Professor Mário Dantas
JAVA: Conceitos Iniciais
Classes, Objetos e Encapsulamento
Programação Orientada a Objetos com Java
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
Aula prática 8 Ponteiros Monitoria de Introdução à Programação.
Aula prática 6 Vetores e Matrizes
Linguagem de Programação II Parte IX
Sobrecarga e Encapsulamento
Tópicos avançados em internet A
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Paradigmas da Programação – Semestre 1 – Aula 2 Professores: Eduardo Mantovani Fábio de Paula.
+ Curso de C/C++ Aula 6 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
+ Curso de C/C++ Aula 7 Instrutor: Luiz Felipe Sotero Material por: Allan Lima
Tipos Abstratos de Dados
Classes, Objetos, Atributos e Métodos JAVA
Linguagens de Programação II
Orientação a Objetos Parte I
Programação Orientada à Objetos
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Orientação a Objetos Parte II
Aula prática 14 Orientação a Objetos – C++ Parte 2
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista
Aula Prática 4 Monitoria IP/CC (~if669).
Orientação a Objetos Erick Luis Moraes de Sousa
Aula Prática 3 Funções Monitoria Introdução à Programação.
Monitoria IP ~if669 Garbage Collection e pacotes.
Aula prática 3 Aprofundando em Funções Parâmetros de uma função Uso do return Execução Variáveis Global, local e estática Monitoria de Introdução à.
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2.
Paradigmas da Programação – Semestre 2 – Aula 1 Professores: Fábio de Paula Santos Eduardo Mantovani
Aula Prática 3 Funções Monitoria Introdução à Programação.
Construtores e Destrutores
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Bruno Inojosa MCP .NET Framework
Modificadores Programação II.
Aula Prática 13 Orientação a Objeto Monitoria
Orientação a Objetos Paradigma. Davi Pires Revisão Dúvidas da aula passada? –Características de Java –Compilador vs. Interpretador.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
Módulo II Capítulo 1: Orientação a Objetos
UCSal – Bacharelado em Informática Tópicos Especiais em Informática II Profa. Semíramis Assis
Linguagem de Programação
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

Aula prática 13 Orientação a Objetos – C++ Parte 1 Monitoria de Introdução à Programação

Roteiro Orientação a Objetos C++ Duvidas Exercícios Diferenças de C. Classes Definição Modos de acesso Costrutor e Destrutor Alocação dinâmica. Referencia. Streams. Duvidas Exercícios

Orientação a Objetos Paradigma de programação em que tudo deve ser tratado com um “objeto”, com seu estado(atributos) e comportamentos(métodos). Atributos são como variáveis internas do objeto, e métodos são como funções que o objeto pode executar. O modelo para um objeto é a “classe”, que define seus atributos e métodos. Um objeto particular na memória é denominado “instância” de sua classe, e o ato de criar um objeto é chamado de “instanciar” sua classe. Classes são muito similares à estruturas, mas com funções internas (métodos ).

C++ Criado em 1983 por Bjarne Stroustrup sob o nome de “C com classes”, com o propósito de introduzir conceitos de alto nível à velocidade de uma linguagem de baixo nível. Por ser, no seu início, uma extensão da linguagem C, permite também o uso dos paradigmas disponíveis nessa outra. Códigos escritos em C são quase sempre compatíveis com compiladores de C++.

C++ - Classes Em C++, para definir uma classe, usamos a palavra reservada class. Como numa struct, definimos os seus atributos e seus métodos. Por convenção, o nome da classe começa com letra maiúscula.

C++ - Classes Usamos as palavras reservadas public, protected e private para restringir o acesso à membros da classe: Membros public podem ser acessados em qualquer lugar. Membros protected podem ser acessados por membros da mesma classe, “amigos” e classes derivadas. Membros private só podem ser acessados por membros da mesma classe e por classes derivadas. Esta é a opção default. Isso é feito para permitir que a abstração seja forçada: impedir que um programador que irá usar sua classe acesse diretamente alguns membros e use somente alguns métodos, para que você possa mudar o funcionamento interno da classe sem prejudicar o trabalho dele. Isso, junto à criação de métodos para acessar os atributos internos, é chamado de Encapsulamento.

C++ - Classes Definimos os métodos dentro da classe, mas podemos implementá-los fora dela: Isso permite que deixemos a definição da classe em um arquivo, disponível para outros programadores, e precompilemos outro arquivo, que contém as implementações dos métodos. O operador :: (codeblocks) define o escopo acessado. O ponteiro this aponta para aquela instância da classe, e ajuda quando há conflito de nomes.

C++ - Classes Construtor é um método chamado sempre que a classe é instanciada. Não tem tipo de retorno. É executado após a alocação de memória para o objeto. É sempre definido implicitamente um construtor sem parâmetros, que é usado por padrão e com alocação dinâmica, mas esse pode ser definido explicitamente. Se QUALQUER construtor for definido, esse construtor padrão é perdido, e então você precisará declara-lo mesmo vazio. É muito útil para inicializar certos atributos de todos as instâncias da classe ( saldo de uma conta inicia com 0, pilha sempre começa vazia, etc. )

C++ - Classes Analogamente ao Construtor, Um Destrutor é um método chamado quando a instância sai de escopo ou é desalocada. Um destrutor não pode aceitar parâmetros. Um destrutor padrão é implementado, que não faz nada. É útil implementar um destrutor quando há objetos alocados dinamicamente dentro da classe, já que é preciso desalocá-los antes de destruir o objeto. Não é usal ( nem recomendado ) chamar destrutores de objetos alocados estaticamente, pois esses são chamados automaticamente. Chamar um destrutor duas vezes causa erro de execução.

C++ - Classes Objetos alocados dinamicamente precisam ter seu destrutor chamados explicitamente. Assim como em C eles precisam do free, veremos em breve como. O código do construtor só é executado se a instancia daquele objeto foi corretamente alocada. Caso controrário o construtor nem é chamado. Dentro do construtor você não deve alocar this, ou checar-lo se é diferente de NULL. Analogamente, depois de um destrutor ser executado a instancia da classe é desalocada da memoria. Você não deve desalocar a própria estrutura ou atributos estaticos.

C++ - Alocação dinâmica Em C++ temos o operador new para alocar memória. Ele é preferível ao malloc e afins, pois chama o construtor da classe. O operador new por padrão não retorna NULL, ele lança uma exceção

C++ - Alocação dinâmica Para desalocar, usamos o operador delete: É preciso usar o delete para desalocar memória alocada com o new. É preciso tomar cuidado, pois chamar delete duas vezes no mesmo objeto causará erro de execução (como acontece com o free() ). Se for usado new, use delete. Se for usado malloc(), use free().

C++ - Referência Além de variáveis estáticas e ponteiros, temos em C++ as referências. Usando o operador &, podemos criar referências, que se ligam à variáveis e passam a ser “outro nome” para ela. Referências só podem ser ligadas na sua inicialização. Isso pode ser usado em funções para passar parâmetros por referencia sem precisar se preocupar com ponteiros.

C++ - Referência Para todos os efeitos pensem referências como ponteiros, que não podem apontar endereços diferentes ao longo do tempo. Você pode retornar referências. E se algo for atribuido a este retorno, ele irá mudar o valor original. Assim como ponteiros, retornar refêrencias a termos que sairam de escopo causará erros de execução.

C++ - Streams Em C++, a entrada e saída de dados é efetuada através da biblioteca iostream Um “stream” representa um dispositivo de entrada ou saída, tal como o teclado e o console, ou arquivos.

C++ - Streams A entrada padrão, cin, é usada com o operador >> : Pode ser usado encadeado: A saída padrão, cout, é usada com o operador << : Também pode ser usado encadeado: O endl é a quebra de linha (‘\n’).

C++ - Streams Na biblioteca fstream temos as classes: ifstream, para arquivos abertos em modo leitura. ofstream, para arquivos abertos em modo escrita. fstream, para arquivos abertos em modo escrita e leitura.

Dúvidas?

Exercicio Exemplo 0 – Implemente a classe PilhaVetor usando internamente um vetor. Faça pelo menos os seguintes métodos publicos: Pilha(unsigned); /* Iniciando o vetor com o tamanho dado, mas usando realloc se necessário. Essa classe não terá construtor padrão */ ~Pilha(); //Desalocando o vetor interno void push(int); void pop (); Int& top(); unsigned size();

Exercício 1 – Implemente a classe Lista usando internamente uma estrutura chamada NoList e apontando para o começo e para o final. Faça pelo menos os seguintes métodos publicos: List(); //Criando a lista interna vazia ~List(); //Desalocando a lista void push_begin(int); void push_end(int); void pop_begin(); void pop_end(); Int& front(); int& back(); NoList* begin(); NoList* end(); unsigned size();

Exercício 2 – Usando sua implementação ( da primeira questão ) da classe Lista implemente uma classe Pilha que use ela internamente. Com pelo menos os seguintes métodos. Pilha(); ~Pilha(); void push(int); void pop(); int& top(); unsigned size(); Dica : Faça a Lista ser um atributo de Pilha, e faça cada metodo de Pilha ser apenas uma “tradução” para métodos do objeto interno de Lista.

Exercício 3 – Usando sua implementação ( da primeira questão ) da classe Lista implemente uma classe Fila que use ela internamente. Com pelo menos os seguintes métodos. Fila(); ~Fila(); void push(int); void pop(); int& top(); unsigned size(); Dica : Faça a Lista ser um atributo de Fila, e faça cada metodo de Fila ser apenas uma “tradução” para métodos do objeto interno de Lista.