Programação Orientada a Objetos OUTROS MECANISMOS
|
|
- Ana Beatriz Quintão
- 5 Há anos
- Visualizações:
Transcrição
1 Programação Orientada a Objetos OUTROS MECANISMOS Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas
2 Unidade V Unidade IV Outros Mecanismos: Classes parametrizadas. A biblioteca padrão. Exceções. Identificação de tipo em tempo de execução. Hoje trabalharemos o tópico Classes Parametrizadas. Os demais tópicos serão estudados por vocês durante o desenvolvimento do Trabalho Prático IV. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 2/36
3 Templates Stroustrup inicialmente chamou os templates de tipos parametrizados: Uma classe ou uma função template serve como uma receita para a geração automática de classes e funções, com base na escolha de um tipo pelo usuário. As classes e algoritmos presentes na biblioteca padrão (vector<t>, list<t>, sort, find, etc ) são exemplos de classes e funções template. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 3/36
4 Exemplo Uma Pilha (Simples) de Inteiros class IntStack{ int* stack ; int top, ssize; public: IntStack(int size):top(0),ssize(size){stack = new int[size];; ~IntStack() { delete[] stack; void push(int i) { if(top >= ssize) { cout << Too many push()es ; exit(1); stack[top++] = i; int pop() { if (top <= 0) { cout << Too many pop()s ; exit(1); return stack[--top]; ; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 4/36
5 Pergunta Interessante E se o desejo for trabalhar com uma pilha de objetos de qualquer tipo? 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 5/36
6 Solução 1 (Horrorosa!) Copiar o código da pilha de inteiros e realizar os a- justes necessários para o novo tipo: uma pilha de a- viões. Desvantagens: Cansativo. Confuso. Propenso a erros. Deselegante. ECA! 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 6/36
7 Solução 2 (Não Muito Bonita...) Uma classe da biblioteca padrão é a base para as demais classes, não existindo mais do que uma árvore hierárquica. Utiliza-se a herança da classe base genérica: Classe base genérica: Object. As demais classes devem ser criadas a partir da classe base Object. Assim, seus objetos são armazenados no container de ponteiros para Object. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 7/36
8 Solução 3 Templates Em C++, tentou-se inicialmente implementar a solução apresentada no slide anterior: A utilização do mecanismo era complicada e confusa, especialmente porque todas as classes deveriam ser derivadas de uma única classe: Object! Em muitas situações era necessário introduzir herança múltipla... 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 8/36
9 Solução 3 Templates Inicialmente, Stroustrup propôs criar as classes containers como sendo grandes macros com argumento. Assim, ao se criar um container para um objeto, fazia-se uma dupla chamada da macro. Infelizmente, essa solução era mais confusa do que as soluções existentes até então... Finalmente, Stroustrup modificou essa macro original, simplificando-a e movendo-a do domínio do préprocessador para dentro do compilador. Esse novo dispositivo ele denominou de Templates. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 9/36
10 Solução 3 Templates Os Templates C++ permitem a execução de um molde genérico Stack<T> com parâmetro T de qualquer tipo, podendo esse tipo ser primitivo da linguagem ou definido pelo próprio usuário. Os Templates C++ fornecem uma maneira reuso do código fonte, ao contrário da herança e da composição, que fornecem uma maneira de reuso do código objeto. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 10/36
11 Solução 3 Templates Template é a palavra chave para o compilador identificar que a classe ou função manipulará um tipo não especificado: O mecanismo pode ser implementado na forma de classes template ou de funções template. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 11/36
12 Sintaxe para a definição: Funções Template template <class Tipo1 [,..., class Tipo2]> protótipo_função_template() { //código da função template Exemplo: template <class T> T soma(const T& p1, const T& p2) { return(p1+p2); 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 12/36
13 Funções Template Utilização: int i = 1, j = 2; double f = 3., g = 4.; Matriz A(20,20), B(20,20); // gera int soma(const int&, const int&) int k = soma(i,j); // gera double soma(const double&, const double&) double h = soma(f,g); // gera Matriz soma(const Matriz&, const Matriz&) // (se existir Matriz::operator+) Matriz C = soma(a,b); 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 13/36
14 Funções Template O código do slide anterior mostra claramente uma característica das funções template: elas só podem ser instanciadas (ter seu tipo genérico T substituído por um tipo de verdade ) caso o tipo de verdade satisfaça alguns pré-requisitos... No caso específico da função soma, quais seriam os prérequisitos? template <class T> T soma(const T& p1, const T& p2) { return(p1+p2); 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 14/36
15 Funções Template No caso específico da função soma, quais seriam os pré-requisitos? template <class T> T soma(const T& p1, const T& p2) { return(p1+p2); O tipo T: Tem que ter implementado o operator+! Deve possuir também um construtor de cópia (criado pelo programador ou sintetizado pelo compilador) para permitir o retorno por cópia. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 15/36
16 Funções Template Quando uma função template é chamada, os tipos dos argumentos da função determinam qual versão do template será utilizada, isto é, os parâmetros do template são deduzidos a partir dos argumentos da função. Cada vez que o compilador encontrar uma chamada de função template ainda não realizada para aqueles tipos, ele definirá um novo código (as várias funções terão endereços e códigos diferentes): esse processo é chamado de instanciação da função template. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 16/36
17 Funções Template Exemplo template< class T > void printarray( const T *array, const int count ){ for ( int i = 0; i < count; i++ ) cout << array[ i ] << " "; cout << endl; int main() { const int acount = 5, bcount = 7, ccount = 6; int a[ acount ] = { 1, 2, 3, 4, 5 ; double b[ bcount ] = { 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7 ; char c[ ccount ] = "HELLO"; // 6th position for null printarray( a, acount ); // integer template function printarray( b, bcount ); // double template function printarray( c, ccount ); // character template function return 0; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 17/36
18 Templates Argumentos Explícitos Em algumas situações, não é possível para o compilador deduzir qual é o tipo de argumentos do template. template <class T> T max (T t1, T t2) { return (t1 > t2? t1 : t2); unsigned int ui = 10; int ia = 1; // Erro! Deve instanciar max<unsigned int> ou max<int>? max(ui, ia); Solução: indicar explicitamente a instância desejada: max< unsigned int > (ui, ia); 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 18/36
19 Templates Especialização Explícita Nem sempre é possível escrever uma única função template que funcione bem para todos os tipos para os quais ela pode ser instanciada. Em alguns casos, pode-se tirar vantagem do conhecimento específico que se tem sobre algum tipo para escrever uma função mais eficiente do que a instanciada pelo template. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 19/36
20 Templates Especialização Explícita Em outros casos, a função é simplesmente uma função errada para o tipo: template <class T> T max (T t1, T t2) { return (t1 > t2? t1 : t2); Essa função não funciona corretamente para o tipo const char * (string do C) Para resolver esse problema, pode-se criar uma especialização explícita para a função para o tipo const char*! 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 20/36
21 Templates Especialização Explícita Especialização explícita para const char*: #include <cstring> typedef const char *PCC; template<> PCC max< PCC > (PCC s1, PCC s2) { return ( strcmp( s1, s2) > 0? s1 : s2 ) ; int main () { int i = max (10, 5); // chama int max<int> (int, int); // Chama a especialização max<pcc> (PCC, PCC); const char *p = max ( hello, world ) ; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 21/36
22 Classes Template Pilha template <class T> class Stack{ T* stack ; int top, ssize; public: Stack(int size):top(0),ssize(size){stack = new T[size];; ~Stack() { delete[] stack; void push(t i) { if(top >= ssize) { cout << Too many push()es ; exit(1); stack[top++] = i; T pop() { if (top <= 0) { cout << Too many pop()s ; exit(1); return stack[--top]; ; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 22/36
23 Classes Template Array template<class T> class Array{ private: T* A; int size; public: Array(int tam):size(tam) {A = new T[tam]; T& operator[](int index) { return A[index]; ; int main(){ Array<int> ia(20); Array<float> fa(20); for(int i=0; i<20; i++){ ia[i]=i*i; fa[i]=i*1.414; for(int j=0; j<20; j++) cout << j << : << ia[j] <<, << fa[j] << endl; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 23/36
24 Classes Template Funções não inline template<class T> class Array{ private: T* A; int size; public: Array(int tam); T &operator[](int index); ; // Funções não inline template<class T> Array<T>:: Array(int tam):size(tam){ A = new T[tam]; template<class T> T & Array<T>:: operator[](int index) {return A[index]; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 24/36
25 Classes Template Pilha com Constante template<class T,int sz=100> class Stack { private: T stack[sz]; int top; public: Stack() : top(0){; void push (const T &i); T pop(); int size() { return top ; T peek() const; ; template<class T, int sz> void Stack<T,sz> :: push(const T&i) { if(top >= sz){ cout<< Too many push()es ; exit(1); stack[top++] = i; template<class T, int sz> T Stack<T,sz> :: pop(){ if (top <= 0) {cout<< Too many pop()s ; exit(1); return stack[--top]; template<class T, int sz> T Stack<T,sz> :: peek() const { return stack[top-1]; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 25/36
26 Instanciação das Funções Template Uma função membro de uma classe template também é uma função template; A norma C++ exige que essa função membro somente seja instanciada quando chamada explicitamente ou quando o seu endereço é utilizado (por meio de um ponteiro para a função): Uma função membro de uma classe template não é instanciada automaticamente quando a classe template é instanciada! 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 26/36
27 Classes Template e Membros Static Uma classe template pode declarar membros de dados static. Cada instanciação da classe template vai possuir seu próprio conjunto de membros de dados static. Como todo membro static de dados, ele deve ser inicializado fora da classe: template <class T> class Ponto { T x; T y static int npontos; // etc... ; template <class T> int Ponto<T>::npontos = 0; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 27/36
28 Classes Template e Herança Os conceitos básicos associados à herança também podem ser utilizados em conjunto com classes templates: Além de gerar classes, podem ser geradas hierarquias de classes com templates, sendo que cada hierarquia é parametrizada. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 28/36
29 Classes Template e Herança Podem-se criar: Classes template derivadas de classes template. Classes comuns derivadas de instâncias de classes template. Classes template derivadas de classes comuns. Classes template derivadas de instâncias de classes template. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 29/36
30 Classes Template e Herança Funções virtuais são permitidas na hierarquia, o que permite a utilização de polimorfismo. Pode-se ter também classes template abstratas, etc... 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 30/36
31 Classes Template e Herança template <class T> class Base { // Classe template T b; ; template<class T> class D1 : public Base<T> { // template derivada de template T c; ; template <class T> class D2 : public Base <int> { // template derivada de instância T d; ; class D3 : public Base<float> { // classe comum derivada de instância int f; ; template <class T> class D4 : public D3 { // template derivada de classe comum T g; ; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 31/36
32 Templates e Header Files Existem duas maneiras de organizar o código fonte quando funções e classes templates são utilizadas: Colocar as declarações e definições das classes em um.h. Isso pode parecer que viola a regra normal dos arquivos de cabeçalho, mas definições de templates são especiais, pois o compilador necessita efetuar a substituição de código fonte. Compiladores teoricamente permitem a separação dos arquivos.h e.cpp, mas a palavra chave export deve ser utilizada. A palavra export significa: é acessível a partir de outra unidade de compilação. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 32/36
33 Classes Template e Funções Membro Template Uma função membro de uma classe template pode ser uma função template parametrizada por um outro tipo: template<class T, int size > class Array{ private: T A[size]; public: T &operator[](int index) { return A[index]; template <class Iter> void copy(iter first, Iter last) { for(int i=0; first!= last; ++first, ++i) A[i] = *first; ; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 33/36
34 Classes Template e Funções Membro Template A função membro template também pode ser definida fora da definição da classe: template<class T, int size > class Array{ private: T A[size]; public: T &operator[](int index) { return A[index]; template <class Iter> void copy(iter first, Iter last); ; template <class T, int size> template <class Iter> void Array< T, int size > :: copy(iter first, Iter last){ for(int i=0; first!= last; ++first, ++i) A[i] = *first; 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 34/36
35 Importante Esta apresentação é uma adaptação do material originalmente desenvolvido pelo professor Renato Cardoso Mesquita, do Departamento de Engenharia Elétrica da Universidade Federal de Minas Gerais. 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 35/36
36 That's All Folks! 24/08/15 Programação Orientada a Objetos Renato Dourado Maia 36/36
Templates. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP
Templates BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Introdução Os templates ou gabaritos fornecem a base para existência da programação genérica
Leia maisLinguagens de Programação
Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Polimorfismo Mais exemplos
Leia maisProgramação Orientada a Objetos HERANÇA E COMPOSIÇÃO
Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade IV Unidade IV Herança e Composição: Herança simples. Composição.
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Template Templates Funções templates Especificam
Leia maisGenéricos. Profa. Thienne Johnson EACH/USP
Genéricos Profa. Thienne Johnson EACH/USP Java, como programar, 6ª edição Deitel & Deitel Capítulo 18 Material complementar http://wps.prenhall.com/br_deitel_comoprogra_6/ Todas as classes em Java herdam,
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Classes e Objetos Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Em que Parte do Conteúdo Estamos? Da Unidade III Classes e Objetos, já
Leia maisLaboratório de programação II
Laboratório de programação II Templates Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Templates são uma alternativa à sobrecarga de funções, quando estas envolvem lógicas
Leia maisProgramação Orientada a Objetos CLASSES E OBJETOS
Programação Orientada a Objetos CLASSES E OBJETOS Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Em que Parte do Conteúdo Estamos? Da Unidade III Classes e Objetos, já
Leia maisLinguagem de Programação I
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Sobrecarga de funções Mesmo nome Mesma semântica Diferentes tipos de dados As vezes a mesma sintaxe... int
Leia maisTemplates. Templates em C++ é o mecanismo que permite que um tipo seja parâmetro de uma classe ou função
Templates Por que templates? C++ exige que variáveis, funções ou outras entidades sejam declaradas usando tipos específicos Pode-se acabar muito código que é essencialmente o mesmo, diferenciando-se apenas
Leia maisProgramação Orientada a Objetos HERANÇA E COMPOSIÇÃO
Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade IV Unidade IV Herança e Composição: Herança simples. Composição.
Leia maisFísica Computacional 15 Templates
Física Computacional 15 Templates 1. Templates de classes 2. Templates de Funções 3-12-2009 Física Computacional - MEFT 2009/10 P. Bicudo, P. Martins & M. Cardoso 1 Já vimos que através da herança e de
Leia maisProgramação Orientada a Objetos HERANÇA E COMPOSIÇÃO
Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade IV Unidade IV Herança e Composição: Herança simples. Composição.
Leia maisLinguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista
Linguagens de Programação Departamento de Engenharia Eletrônica e de Computação - DEL-Poli/UFRJ Prof.: Miguel Elias Mitre Campista == Laboratório 11 == 1. Escreva uma classe Carrinho para armazenar Itens
Leia maisProgramação Orientada a Objetos HERANÇA E COMPOSIÇÃO
Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Na Última Aula... Considere a definição de um tipo como Shape, a ser
Leia maisC com introdução a OO
... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Classes e Objetos Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Lembrando Na Unidade II Modelagem Orientada a Objetos, vimos: Como utilizar
Leia maisProgramação Orientada a Objetos HERANÇA E COMPOSIÇÃO
Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade IV Unidade IV Herança e Composição: Herança simples. Composição.
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisClasses e Encapsulamento
Classes e Encapsulamento Marcio Santi POO e C++ Tipo Abstrato de Dados (TAD) TAD atributos dados que o representam interface operações associadas como é manipulado 1 Exemplo: Editor Gráfico (classe círculo)
Leia maisParadigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto
Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural
Leia maisGenerics POO. Prof. Marcio Delamaro
Generics POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/39 O que são Tipos genéricos São uma forma de definir e utilizar classes de forma genérica Dá flexibilidade
Leia maisFundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN
Fundamentos de Programação Linguagem C++ Introdução, identificadores, tipos de dados Prof. Bruno E. G. Gomes IFRN 1 Linguagem de Programação Constituída por símbolos e por regras para combinar esses símbolos
Leia mais//conteúdo do arquivo pacote.h
//conteúdo do arquivo pacote.h #ifndef PACOTE_H #define PACOTE_H #include #include class Pacote friend istream &operator>> (istream &, Pacote &); friend ostream &operator
Leia maisLaboratório de programação II
Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando
Leia maisProgramação científica C++
Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2 Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante Memória do computador
Leia maisProgramação com genéricos
Programação com genéricos Laboratório de Programação Pedro Vasconcelos, DCC/FCUP Fevereiro 2015 Tipos genéricos tipos genéricos permitem definir classes ou interfaces que são parameterizadas por outras
Leia maisThe Cyclops Project. Introdução: C++
The Cyclops Project Introdução: C++ Aula 1 Visão Geral Histórico da Linguagem Programa C++: header, source função main() GCC Arquivos objeto, bibliotecas dinâmicas e estáticas #include, #define, namespaces,
Leia maisParadigmas de Linguagens de Programação. Subprogramas
Cristiano Lehrer Características Gerais dos Cada subprograma tem um único ponto de entrada Toda unidade de programa chamadora é suspensa durante a execução do programa chamado, o que implica na existência
Leia maisDEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação
Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?
Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisAtribuições: Valores, Ponteiros e Referências
Atribuições: Valores, Ponteiros e Referências Estruturas de Dados Prof. Vilson Heck Junior Sobre Variáveis Aprendemos, em introdução à programação, que possuem 3 partes mais importantes: Nome; Tipo de
Leia maisLinguagem de Programação III
Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java
Leia mais3. Vectores: Algoritmos de Pesquisa. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006)
3. Vectores: Algoritmos de Pesquisa João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog2-2006/2007 Introdução Algoritmo: conjunto
Leia maisBásico: estrutura de programa, sintaxe Interface com linha de comando
Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências
Leia maisJava First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.
Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado
Leia maisProgramação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno
Programação Orientada a Objetos Aula 1.9 this e static Prof. Bruno Moreno bruno.moreno@ifrn.edu.br Relembre: Clase RoboSimples Os métodos move() e move(int passos) podem ser reescrito sem redundância de
Leia maisMétodos Genéricos. Prof.: Michele Nasu Tomiyama Bucci
Métodos Genéricos Prof.: Michele Nasu Tomiyama Bucci Introdução Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados
Leia maisCarlos Eduardo Batista. Centro de Informática - UFPB
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Complexidade dos sistemas de software Estrutura Decomposição Abstração Hierarquia Projeto de sistemas complexos
Leia maisAula 6 POO 1 Construtores. Profa. Elaine Faria UFU
Aula 6 POO 1 Construtores Profa. Elaine Faria UFU - 2019 Sobre o Material Agradecimentos Aos professores José Gustavo e Fabiano, por gentilmente terem cedido seus materiais. Os slides consistem de adaptações
Leia maisFundamentos de Programação
Fundamentos de Programação ET43I Aula 5 Prof. Daniel Cavalcanti Jeronymo Orientada a Objetos e instâncias. Construtores, destrutores e operador de atribuição de cópia. Objetos, atributos, operações: mensagens
Leia maisFundamentos de Programação 2
Fundamentos de Programação 2 ET43G Aula 9 Prof. Daniel Cavalcanti Jeronymo e instâncias. Construtores, destrutores e operador de atribuição de cópia. Objetos, atributos, operações: mensagens e métodos,
Leia maisIntrodução a POO. Introdução a Linguagem C++ e POO
Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes
Leia mais3.4. Programação Orientada a Objetos
Paradigmas de Linguagens I 1 3.4. Programação Orientada a Objetos Os conceitos de objetos e classes, vistos nas seções anteriores, são fundamentais na programação orientada a objetos. Complementando a
Leia maisLinguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos
Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos
Leia maisLinguagem de Programação C++
O que acontecerá se um programa driver para a classe Matriz efetuasse a seguinte sequência de instruções: #include "Matriz.h" int main() char opcao; switch (opcao) case 1: } 201 } int l, c; cout
Leia maisANHANGUERA ESTRUTURA DE DADOS AULA 02 O QUE É ESTRUTURA DE DADOS? Prof. Thomás da Costa
ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 02 Prof. Thomás da Costa thomascosta@aedu.com Recordar é viver Lembrando Programação Estruturada: Estrutura de um programa em C++. Declaração de variáveis. Laços.
Leia maisRelacionamentos entre objetos
Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores t e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos
Leia maisMotivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software
Estrutura de Dados Aula 01 -Tipos Abstratos de de Dados Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Motivação Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto
Leia maisGenéricos by Pearson Education do Brasil
1 18 Genéricos 2 OBJETIVOS Neste capítulo, você aprenderá: Como criar métodos genéricos que realizam tarefas idênticas em argumentos de diferentes tipos. Como criar uma classe Stack genérica que pode ser
Leia maisLinguagem de Programação I
Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Herança simples Composição Combinando composição e herança Polimorfismo e funções virtuais Classes abstratas
Leia maisfacilita o trabalho em equipe, com diferentes grupos trabalhando em cada módulo independente.
Estruturação do Programa Queremos organizar um programa de forma a: dividi-lo em partes que realizem tarefas específicas, resumindo um problema complexo a vários problemas mais simples simplifica a elaboração
Leia maisFICHA 8 PILHAS E FILAS
ESTRUTURAS DE DADOS E ALGORITMOS Departamento de Engenharia Eletrotécnica e de Computadores Faculdade de Ciências e Tecnologia da Universidade de Coimbra FICHA 8 PILHAS E FILAS 8.1. Objetivos Objetivos
Leia maisControlo de Execução. K&R: Capitulo 3
Controlo de Execução K&R: Capitulo 3 IAED, 2009/2010 Controlo de Execução Instruções e Blocos if else-if switch Ciclos: Instruçõeswhile e for Instruçãodo-while break e continue goto e labels 2 IAED, 2009/2010
Leia maisPCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo
PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 6: Polimorfismo Escola Politécnica da Universidade de São Paulo Conceito de polimorfismo 2 Polimorfismo A palavra vem
Leia maisCONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO
CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que
Leia maisMétodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Classes e Objetos Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Onde Estamos? Da Unidade III Classes e Objetos, já foram trabalhados
Leia maisFundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus
Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis
Leia maisProfa. Thienne Johnson EACH/USP
Profa. Thienne Johnson EACH/USP Declarando classes usando generics Métodos que usam um parâmetro de tipo como tipo de retorno Declaração da classe BasicGeneric: class BasicGeneric Contém o parâmetro
Leia maisLINGUAGEM DE PROGRAMAÇÃO C++ TRATAMENTO DE EXCEÇÕES
LINGUAGEM DE PROGRAMAÇÃO C++ TRATAMENTO DE EXCEÇÕES Roberto S. Bigonha UFMG 15 de setembro de 2008 TRATAMENTO DE EXCEÇÃO PROBLEMA: Bibliotecas têm meios para detectar muitas situações de erro de execução,
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem
Leia maisORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO SOBRECARGA DE OPERADORES (C++) A sobrecarga de operadores ocorre quando desejamos utilizar operadores jáj conhecidos (+,-,*,/,=,+=...)
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisCOMPORTAMENTOS - Observações
COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para
Leia maisPilhas. Algoritmos e Estruturas de Dados I. José Augusto Baranauskas Departamento de Física e Matemática FFCLRP-USP
Pilhas Algoritmos e Estruturas de Dados I Nesta aula veremos o ADT pilha Uma pilha é usada em muitas situações tais como avaliação de expressões aritméticas, chamada e retorno de procedimentos e funções
Leia maisPCC104 - Projeto e Análise de Algoritmos
PCC104 - Projeto e Análise de Algoritmos Marco Antonio M. Carvalho Departamento de Computação Instituto de Ciências Exatas e Biológicas Universidade Federal de Ouro Preto 27 de setembro de 2018 Marco Antonio
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de
Leia maisIntrodução à Disciplina de. Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR
Introdução à Disciplina de Estruturas de Dados Adair Santa Catarina Curso de Ciência da Computação Unioeste Campus de Cascavel PR Fev/2019 Software = Lógica + Dados Software Niklaus Wirth (1989). Lógica
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisLista de Linguagens de Programação 14
Lista de Linguagens de Programação 14 Nome: Matrícula: 1. Existem três formas de alocação de memória: memória estática, memória de pilha e alocação em heap. Enquanto endereços estáticos são conhecidos
Leia maisTemplate de classe. class vetor { int *arranjo; int limite; public: vetor(int=100); int & operator[ ](int n); };
Template de classe! Idéia é semelhante ao template de função! Usando a classe vetor que foi desenvolvida anteriormente: class vetor { int *arranjo; int limite; public: vetor(int=100); int & operator[ ](int
Leia maisPonteiros & tabelas (cont.) K&R: Capítulo 5
Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.5. Vetores 3.5.1. Vetores 3.5.2. Strings 3.5.3.
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia mais# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira
# Estrutura de Dados # Aula - Revisão de C/C++ na Prática Prof. Leinylson Fontinele Pereira Na aula anterior... Ponteiros Funções Introdução 3 O que vamos aprender? Preparação do ambiente de testes Conceitos
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 7: Interfaces LEEC@IST Java 1/31 Interfaces revisão (1) Uma interface é um conjunto de protótipos de métodos (sem implementações) que especifica um serviço bem definido:
Leia maisAULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos
Câmpus Santa Helena Curso: Ciência da Computação Disciplina: Programação Orientada a Objetos AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos Tema
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.2. Estrutura de Programas e Representação
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Aula VIII Prof. Felício Bruzzi Barros Maio de 2008 Sobrecarga de operadores matriz A, B, C, D; multiplica(a,b,c); soma(a,b,d); escreve(d); matriz A, B, C, D; C=A*B; D=A+B;
Leia maisAlgoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Leia maisAnhanguera Educacional S.A. Centro Universitário Ibero-Americano
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações
Leia maisProgramação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Leia maisSuporte a Programação Genérica em Linguagens
Suporte a Programação Genérica em Linguagens Leandro M. Barros UNISINOS Universidade do Vale do Rio dos Sinos Centro de Ciências Exatas e Tecnológicas São Leopoldo, RS, Brasil lmb@exatas.unisinos.br RESUMO
Leia maisProgramação por Objectos. Java
Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/50 Herança revisão (1) A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse
Leia maisNamespaces, Classes e Métodos.
. Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisLinguagem de Programação C++
Exercício: Com base nos conceitos estudados, implemente uma classe que possibilite a instanciação de matrizes de números naturais, com qualquer quantidade de linhas e colunas. Especifique os membros de
Leia maisComputação II Orientação a Objetos
Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Interfaces Uma interface é uma forma abstrata de descrever um objeto A classe fixa a forma de um objeto
Leia maisClasses, Métodos e Propriedades
Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Estruturas de dados que
Leia maisConceitos de Programação Orientada por Objectos. Rui Camacho Programação 2
Conceitos de Programação Orientada por Objectos Um Problema Problema: Existem, hoje em dia, aplicações complexas e de grande dimensão que é preciso desenvolver e manter de modo eficiente utilizando equipas
Leia maisPonteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013
Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisAlgoritmos e Estruturas de Dados
Pilhas e Filas Algoritmos e Estruturas de Dados 009/00 Obs: slides marcados com (*) não foram apresentados na aula teórica, mas são parte da bibliografia a estudar! Pilhas Pilha estrutura de dados linear
Leia maisPonteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013
Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros
Leia maisGenerics - Java. Fernando Santos. Programação Orientada a Objetos
- Java Fernando Santos Programação Orientada a Objetos Generics é uma funcionalidade incorporada ao Java a partir da versão 5.0 Permite aos programadores escreverem métodos genéricos Os parâmetros dos
Leia mais