Tipos Abstratos de Dados (TAD)
|
|
|
- Laís Coelho
- 6 Há anos
- Visualizações:
Transcrição
1 Tipos Abstratos de Dados (TAD) Módulos e Compilação em Separado Um programa em linguagem C/C++ pode ser dividido em vários arquivos fontes com extensão c/cpp. Módulo: arquivo que implementa funções que representam apenas parte da implementação do programa, ou seja um programa pode ser composto por um ou mais módulos. Cada módulo é compilado separadamente, gerando, para cada módulo, um arquivo objeto. Após a compilação individual de cada módulo, esses objetos são ligados ou linkados pelo ligador ou link-editor. 1
2 int comp(char* s); void cop(char* d, char* o); void conc(char* d, char* o); /* implementação das fçs Exemplo str.h str.cpp #include <stdio.h> #include str.h int main( void ) // programa que usa as fçs prg.cpp > g++ c str.cpp > g++ c prg.cpp > g++ o prg.exe str.o prg.o O mesmo arquivo str.c pode ser utilizado por outros programas ou módulos de programação que queiram utilizar funções utilitárias para a manipulação de strings Exemplo Polígono 2
3 Exemplo Polígono Exemplo: Polígono 3
4 Tipos Abstratos de Dados (TAD) Em geral um módulo agrupa vários tipos e funções com funcionalidades relacionadascaracterizando uma finalidade bem definida. Quando um módulo define um novo tipo de dadoe o conjunto de funções para manipular dados desse tipo, dizse que esse módulo representa um TAD(tipo abstrato de dados). Abstrato nesse contexto quer dizer: esquecida a forma de implementação. Assim, um TAD é definido pela finalidade do tipo e das operações associadasa este tipo (funções que manipulam variáveis do tipo) e não pela forma como está implementado (abstrato). Tipos Abstratos de Dados TAD atributos dados que o representam interface operações associadas como é manipulado 4
5 Exemplo: Editor Gráfico (classe círculo) círculo struct circle double x, y; double rad; void translation( ); void scale( ); double area( ); double perim( ); ; atributos interface (x,y) rad Exemplo: Stack push: insere um elemento na pilha s pop: retira um elemento na pilha FILO: first in, last out struct stack int top; char s[max_len]; ; Sempre no topo top l a s a c 5
6 Exemplo: pilha de inteiros (header file) #ifndef stack_h #define stack_h stk.h #define MAX 50 elems[ ] struct Stack int top; int elems[max]; ; void push(stack* s, int i); int pop(stack* s); int empty(stack* s); Stack* createstack(void); #endif top TAD: Pilha de Números Reais stk.cpp stk.h 6
7 Cliente: Calculadora RPN rpn.cpp Classes e Encapsulamento 7
8 Tipos Abstratos de Dados TAD atributos dados que o representam interface operações associadas como é manipulado Exemplo: Editor Gráfico (classe círculo) círculo struct circle double x, y; double rad; void translation( ); void scale( ); double area( ); double perim( ); ; atributos interface (x,y) rad 8
9 Funções Membro de Estruturas Conceito de estruturas em C++ permite que funções sejam definidas como membros. Declaração da função é incluída na definição da estrutura. Define-se operações diretamente relacionadas a um TAD: Funções Membro de Estruturas Para compreender-se melhor esse conceito, considera-se a implementação de um novo método (função membro) à Stack; Para se criar uma nova variável Stack, ou melhor, instanciar um novo objeto da classe Stack, é necessário atribuir logo em seguida zero ao seu campo tops, para dar consistência a esse objeto; Para isso o ideal é criar mais um método para fazer essa atribuição: 9
10 Funções Membro de Estruturas Ao ser executada a chamada stk->reset(), o objeto stk passa a ter o seu atributo top com o valor STK_EMPTY; Funções Membro de Estruturas Analisa-se agora então a função push também como método de Stack, só que dessa vez implementa-se o método fora da estrutura: 10
11 Funções Membro de Estruturas Para o objeto Stack s, a chamada do método push incrementa s.tope atribui a s.elems[top]o valor 14; Para o ponteiro para objeto Stack *sp, ocorre a mesma coisa, mas para o objeto para o qual sp está apontando; Para o caso de sp estar apontando para s(sp = &s;), nesse caso, os atributos alterados serão os do objeto s; Funções membro podem ser definidas dentro e fora da estrutura, conforme observa-se abaixo: Operador de Escopo Funções membro, ou métodos, definidos dentro da estrutura são otimizadas pelo compilador e tratadas implicitamente como métodos inline: Para definir funções membro fora da estrutura, é necessário utilizarse o operador de escopo: operador de escopo 11
12 Operador de Escopo o operador de escopo permite o acesso a nomes declarados em escopos que não sejam o corrente: char *a; // escopo global void main(void) int a; // escopo local (main) a = 23; // como acessar a variável global a? A declaração da variável local aesconde a global, tornando-a impossível de ser acessada Operador de Escopo O operador de escopo possibilita o uso de nomes que não estão no escopo corrente, o que pode ser usado neste caso: char *a; void main(void) int a; a = 23; ::a = abc ; Sintaxe: escopo :: nome 12
13 Facilidades C++ Para Funções C++ provê algumas facilidades de implementação para funções em geral, ou seja, métodos ou funções de escopo global: Funções inline; Parâmetros default; Sobrecarga; Funções inline Tornam a execução do código mais eficiente computacionalmente em relação às funções convencionais; A chamada da função é substituída pelo corpo da função. Extremamente eficientepara funções pequenas, já que evita geração de código para a chamada e o retorno da função. O corpo de funções inlinepodem ser idênticos a uma função normal. A semântica de uma função e sua chamada é a mesma seja ela inlineou não. Utilizado em funções pequenas, pois funções inlinegrandes podem aumentar muito o tamanho do código gerado. 13
14 Valores Default Em C++ existe a possibilidade de definir valores default para parâmetros de uma função, exemplo: void impr( char* str, int x = -1, int y = -1) if (x == -1) x = wherex(); if (y == -1) y = wherey(); gotoxy( x, y ); cputs( str ); // impr( "especificando a posição", 10, 10 ); // x=10, y=10 impr( "só x", 20 ); // x=20, y=-1 impr( "nem x nem y" ); // x=-1, y=-1 Valores Default A declaração do valor default só pode aparecer uma vez: Na implementação da função; No protótipo da função (melhor); void impr( char* str, int x = -1, int y = -1 ); //... void impr( char* str, int x, int y ) //... 14
15 Sobrecarga de Funções Esse recurso permite que um nome de função possa ter mais de umsignificado, ou seja, várias implementações diferentes; Cada implementação deverá apresentar também diferentes assinaturas(protótipos) A função a ser executada dependerá da forma como foi chamada; Em C Puro também se faz sobrecarga, porém de forma implícita, ex: operadores aritméticos Sobrecarga de Funções void display( char *v ) printf("%s", v); void display( int v ) printf("%d", v); void display( float v ) printf("%f", v); display( "string" ); display( 123 ); display( ); 15
16 Sobrecarga de Funções O uso misturado de sobrecarga e valores default para parâmetros também pode causar erros void f(); void f(int a = 0); void main() f( 12 ); // ok, chamando f(int) f(); // erro!! chamada ambígua: f() ou f(int = 0)??? Sobrecarga de métodos É possível também sobrecarregar métodos em uma estrutura: struct stack ; // char pop( ); char pop( int n ); // sobrecarga à pop( ); char stack::pop( int n ) while( (n-- > 1) && (top == 0) ) top--; return s[top--]; // retira n elementos da pilha. 16
17 Acesso público e privado O conceito de estruturas em C++ também permite a definição das formas de acesso a seus dados. IDÉIA: esconder o máximo de informação possível. Para tal são impostas certas regras para acesso a atributos e métodos de uma classe. São estabelecidos três níveis de permissão de acordo com o contexto de uso dos atributos: Privado: acesso restrito aos métodos da classe. Público: acesso a partir de objetos da classe. Protegido: acesso liberado a métodos de classes derivadas Cada um tem uma palavra reservada associada, private, publice protected respectivamente. Acesso público e privado struct controle private: int a; int f1( char* b ); protected: int b; int f2( float ); public: int c; float d; void f3( controle* ); ; As seções podem ser declaradas em qualquer ordem, inclusive podem aparecer mais de uma vez. 17
18 Membros de classes private Somente a própria classepode acessar os atributos privados, ou seja, somente os métodos da própria classe têm acesso a esses atributos. struct SemUso private: int valor; void f1() valor = 0; int f2() return valor; ; int main() SemUso p; p.f1(); cout << p.f2(); return 0; // cria um objeto do tipo SemUso // erro, f1 é private! // erro, f2 é private! Membros de classes public É possível fazer chamadas e manipular respectivamente métodos e atributos da classe. Para poder chamar os métodos f1e f2no exemplo anterior é necessário defini-los como public: struct SemUso private: int valor; public: void f1() valor = 0; int f2() return valor; ; // p.f1(); printf("%d", p.f2() ); // ok, f1 é public! // ok, f2 é public! 18
19 Conceito de classes em C++ O conceito de classes em C++pode ser visto como uma extensão à idéia de estruturas encontrada em C puro. É uma forma de se implementar um tipo e associar a ele funções e operadores (TAD). Uma classe em C++ é o elemento básicosobre o qual toda a orientação a objetos está apoiada. Classes,ou TADsnão são definidospela sua representação interna, mas sim pelas operações sobre esse tipo (interface). Estas operações só fazem sentido quando associadas às suas representações. structe classem C++ Ambas podem representar, um TAD em C++; A diferença está no nível de proteção, caso nenhum dos especificadores de acesso seja usado: class: por default é private struct: por default é public struct A int a; ; class B int a; ; // a é público // a é privado 19
20 Classes em C++ círculo private public class circle double x, y; double rad; public: void translation( ); void scale( ); double area( ); double perim( ); ; atributos interface (x,y) rad Classes em C private public class stack int top; int elems[50]; public: void push( int i ); int pop( ); int empty( ); void reset( ); ; atributos interface 20
21 Classes em C++ Classes em C++ 21
22 Funções e classes friend Algumas vezes duas classes são tão próximas conceitualmente que seria desejável que uma delas tivesse acesso irrestrito aos membros da outra. class point friend class circle; private: double x, y; public: // ; class circle double rad; point cnt; public: // void print( ) cout << x = << cnt.x << endl; cout << y = << cnt.y << endl; ; // x é private. // y é private. Funções e classes friend Em C++ funções também podem ser friendde uma classe: class Stack friend Stack* createstack(void); int top; int elems[max]; public: void push(int i) elems[++top]=i; int pop(void) return elems[top--]; int empty(void) return top == EMPTY; ; // Stack* createstack(void) Stack* s = new Stack; s->top = STK_EMPTY; // top é private return s; 22
23 Funções e classes friend A idéia de métodos e classes friend, no entanto, quebra um dos conceitos básicos de POO, o encapsulamento. No exemplo da classe stack seria mais aconselhável utilizar-se do método reset ao invéz do uso do recurso de funções friend. class Stack int top; int elems[max]; public: void push(int i) elems[++top]=i; int pop(void) return elems[top--]; void reset( ) top = EMPTY; int empty(void) return top == EMPTY; ; Stack* createstack(void) Stack* s = new Stack; s->reset( ); return s; ; Construtores e destrutores CONSTRUTOR: É uma função membro, ou método, usado para construir um objetode uma dada classe e é chamado automaticamente quando um objeto é instanciado. DESTRUTOR: Analogamente, é um método chamado automaticamente quando um objeto é destruído. Os construtores são importantes para manter a consistência interna do objeto. O construtor deve garantir que o objeto recém criadoseja consistente. No exemplo da classe Stack era necessário antes de usaro objeto, ou seja, carregar a pilha, inicializá-lo através do método reset(). Mas algum cliente incauto da classe Stackpoderia inserir e eliminar elementos na pilha sem antes inicializá-la o que provocaria invasão de memória. O uso de construtores elimina essa possibilidade. 23
24 Construtores: classe Stack class Stack pint top; int elems[max]; public: void reset( ) top = EMPTY; void push(int i) elems[++top]=i; int pop(void) return elems[top--]; int empty(void) return top == EMPTY; ; class Stack int top; int elems[max]; public: Stack( ) top reset( = EMPTY; ); void push(int i) elems[++top]=i; int pop(void) return elems[top--]; int empty(void) return top == EMPTY; ; int main( ) //... Stack s; s.reset( ); s.push(43); //... int main( ) //... Stack s; s.push(43); //... Construtores: Declaração Os construtores e destrutores são métodos especiais. Ambos não apresentam um tipo de retorno. O destrutor não pode receber parâmetros, ao contrário dos construtores, que podem receber parâmetros. A declaração de um construtor é feita definindo-se um método com o mesmo nome da classe. O nome do destrutoré o nome da classe precedido de ~ (til). Um construtor de uma classe X é declarado como um método de nome X, o nome do destrutor é ~X. Pelo mecanismo de sobrecarga, classes podem ter mais de um construtor, ao contrário dos destrutores. 24
25 Chamada de construtores e destrutores Os construtores são chamados automaticamente sempre que um objeto da classe for criado: Quando a variável é declarada (alocado na pilha) Quando o objeto é alocado com new (alocado do heap) Os destrutores de objetos alocados na pilha são chamados quando o objeto sai do seu escopo. Os destrutores de objetos criados com newsão chamados com o operador delete. class A public: A( ) cout << construtor << endl; ~A( ) cout << destrutor << endl; ; void main() A a1; // chama construtor de a1 A *a3; A a2; // chama construtor de a2 a3 = new A; // chama construtor de a3 // chama destrutor de a2 delete a3; // chama destrutor de a3 // chama destrutor de a1 Construtores: classe Stack class Stack int top; int elems[max]; public: Stack( ) top = EMPTY; void push(int i) elems[++top]=i; int pop(void) return elems[top--]; int empty(void) return top == EMPTY; ; int main( ) Stack s; s.push(43); //... int main( ) Stack* s; s = new Stack; s->push(43); //... 25
26 Construtores com Parâmetros No exemplo da classe stack o cliente da classe poderia querer definir um objeto pilha com uma dimensão maior do que 50: class Stack int top; int size; float *s; public: Stack( ) top = STK_EMPTY; size = STK_MAX; s = new float[size]; Stack( int n ) // sobrecarga do construtor int main( ) top = STK_EMPTY; size = n; s = new float[size]; Stack s1; Stack s2(2000); ~Stack( ) delete [] s; Stack *s3 = new Stack; ; Stack *s4 = new Stack(2000); Construtores: Classe Stack 26
27 Construtores Automaticos O fato de algumas classes não declararem construtores não significa que elas não tenham construtores. Na realidade o compilador gera dois construtores automaticamente, um defaulte um de cópia. Considere uma classe X: class X int a; ; class X int a; // public: X() // public: X(const X&); ; construtor vazio construtor cópia void main() X a1; // usa construtor vazio X a2(a1); // usa construtor de cópia X a3 = a2; // usa construtor de cópia Construtor de Cópia Dependendo dos tipos dos atributos de uma classe, é necessário implementar explicitamente um construtor de cópia. Exemplo: class Stack int top; int size; float *s; public: Stack( ); Stack( int n ); //... ; int main( ) stack s1(50); //... stack s2 = s1; Stack::Stack( const Stack& t ) size = t.size; top = t.top; s = new char[size]; Requer construtor de cópia!! for(int i=0; i<top; ++i) s[i] = t.s[i]; 27
28 Métodos const Métodos constsão métodos que não alteram o estado interno de um objeto. A especificação constfaz parte da declaração do método: class A public: int value; public: int get ( ) return value; public: void put(int v) value = v; ; void f(const A a) // parâmetro a não pode ser modificado. // quais métodos de a podem ser chamados??? int b = a.get(); // Erro! método não é const Para eliminar o erro seria necessário declarar o método get como sendo const: class A //... public: int get ( ) const return value; ; Parâmetro Implícito This Em todo método não statica palavra reservada thisé um ponteiro para o objeto sobre o qual o método está sendo executado. Todos os métodos de uma classesão sempre chamados associados a um objeto. Durante a execução de um método, os campos do objeto são manipulados normalmente, sem necessidade de referência ao objeto. A palavra thisé utilizada quando se necessita manipular o próprio objeto sobre o qual o método foi chamado. 28
29 This: Exemplo class A public: int i; public: A& inc( ); ; // Este método incrementa o valor interno // e retorna o próprio objeto A& A::inc() // estamos executando este código para obj1 ou obj2? // como retornar o próprio objeto? i++; return *this; // this aponta para o próprio objeto void main() A obj1, obj2; obj1.i = 0; obj2.i = 100; for (j=0; j<10; j++) cout << obj1.inc().i << endl; This: Classe Stack this 29
30 Campos de classe static Quando uma variável é declarada staticdentro de uma classe, todas as instâncias de objetos desta classe compartilham a mesma variável. Uma variável staticé uma variável global, só que com escopo limitado à classe. A declaração de um campo staticaparece na declaração da classe, junto com todos os outros campos. Como a declaração de uma classe é normalmente incluída em vários módulos de uma mesma aplicação via header files(arquivos.h), a declaração dentro da classe é equivalente a uma declaração de uma variável globalextern. A declaração apenas diz que a variável existe; algum módulo precisa defini-la. Campos static: Exemplo class A public: ; int a; static int b; // declara a variável, // equivalente ao uso de extern para // variáveis globais int A::b = 0; // define a variável criando o seu espaço // esta é a hora de inicializar void main(void) A a1, a2; a1.a = 0; // modifica o campo a de a1 a1.b = 1; // modifica o campo b compartilhado por a1 e a2 a2.a = 2; // modifica o campo a de a1 a2.b = 3; // modifica o campo b compartilhado por a1 e a2 cout << a1.a << a1.b << a2.a << a2.b; // imprime Como uma variável estática é única para todos os objetos da classe, não é necessário um objeto para referenciar este campo: A::b = 4; 30
31 Métodos static Métodos staticsão como funções globais com escopo reduzido à classe. Isto significa que métodos staticnão apresentam o parâmetro this, ou seja, apenas os campos staticpodem ser acessados. class A public: int a; public: static int b; public: static void f(); ; int A::b = 10; void A::f() a = 10; // errado, a só faz sentido com um objeto b = 10; // ok, b declarado static Calculadora Versão III: TAD Stack 31
32 Calculadora Versão III: Cliente Exemplo Polígono 32
33 Exemplo Polígono Exemplo: Polígono 33
Classes 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)
Introduçã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
C 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
Paradigmas 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
Descrição de recursos de C++ não relacionados às classes
Capítulo 2a Descrição de recursos de C++ não relacionados às classes Comentários O primeiro recurso apresentado é simplesmente uma forma alternativa de comentar o código. Em C++, os caracteres // iniciam
Classes 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
Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno
Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Visibilidade de membros Membro da classe derivada pode usar os membros públicos ( public ) e protegidos ( protected ) da sua classe base (como
POO e C++: Herança e Polimorfismo
POO e C++: Herança e Polimorfismo Márcio Santi Luiz Fernando Martha Conceito de Herança em POO Recurso que torna o conceito de classe mais poderoso; Permite que se construa e estenda continuamente classes
13/11/15. Incrementando C: C++ E na especificação de BigInt... Arquitetura da solução exemplo. O arquivo de declarações. Explorando a classe BigInt
Incrementando C: permite: Definir uma classe para números grandes; Manter o código bem parecido com o programa C. O mesmo programa em C (e até mesmo em Java) não são tão convenientes e elegantes. #include
Parte IV. Linguagens de Programação. Relembrando da Última Aula... Empacotador de Préprocessadores. Primeiro Exemplo Usando Classes em C++
Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação (Continuação) Relembrando da Última Aula... Ponteiros e strings Mais exemplos
Técnicas de Programação:
Técnicas de Programação: Programação Orientada a Objeto PROF. PROTÁSIO DEE-UFPB Classes e Objetos Classe É uma estrutura de dados que pode conter: Objeto Dados, e Funções. É uma instância de uma classe.
Classes e Objetos. Prof. Leonardo Barreto Campos 1
Classes e Objetos Prof. Leonardo Barreto Campos 1 Sumário Introdução; Escopo de Classe e Acesso a Membros de Classes; Exercício; Os Métodos get e set; Separação de Interface e Implementação; Construtores
Programaçã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++ - Classes e Objetos (Continuação) Empacotador de Pré-processador
Algoritmos e Estruturas de Dados II IEC013
Algoritmos e Estruturas de Dados II IEC013 TAD, Pilhas e Filas Prof. César Melo Todos os créditos ao Prof. Leandro Galvão TAD: Definição SE programa = definição de um tipo de dados + operação sobre dados
Programação Orientada a Objetos
1 Programação Orientada a Objetos A linguagem C, desde a sua primeira especificação, vem sendo desenvolvida com várias extensões. De uma dessas extensões foi criada a Linguagem C++ onde encontramos diversas
Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto
Programação de Computadores II. Cap. 9 Tipos Abstratos de Dados (TAD)
Programação de Computadores II Cap. 9 Tipos Abstratos de Dados (TAD) Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados
# 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
Linguagem 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
Paradigmas de Linguagens de Programação. Tipos de Dados Abstratos
Tipos de Dados Abstratos Cristiano Lehrer Conceito de Abstração O conceito de abstração é fundamental em programação. Quase todas as linguagens suportam abstração de processos, através de subprogramas:
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
Análise de Programação
Análise de Programação Fundamentos da Linguagem de Programação Java Prof. Gilberto B. Oliveira Variáveis Atributos: Variáveis Declaradas fora de um método, sem o modificador static Variáveis membro ou
TAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0202 Algoritmos e Estruturas de Dados I Prof. Thiago A. S. Pardo Modularização em C Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c
PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados
PCS 3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 5: Encapsulamento e Tipo Abstrato de Dados Escola Politécnica da Universidade de São Paulo Agenda Questões Típicas
Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos
Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos [email protected] Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;
Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN
Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores Prof.: Bruno E. G. Gomes IFRN 1 Introdução Na aula de hoje: Declaração de classes Métodos Construtores Exercícios de criação
Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs
Programação Orientada a Objetos Professor: André Luis Meneses Silva [email protected] br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância
Linguagem de Programação C++
Exercício: Linguagem de Programação C++ Construa o diagrama de classes UML para as classes envolvidas na solução do exercício do slide 253. 267 Sobrecarga Linguagem de Programação C++ Neste exercício vimos
INF1007: Programação 2 9 Tipos Abstratos de Dados. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 9 Tipos Abstratos de Dados (c) Dept. Informática - PUC-Rio 1 Tópicos Módulos e compilação em separado Tipo abstrato de dados Exemplo 1: TAD Ponto Exemplo 2: TAD Círculo Exemplo 3:
TAD: Tipo Abstrato de Dados (parte 2)
TAD: Tipo Abstrato de Dados (parte 2) SCC0502 Algoritmos e Estruturas de Dados I Programa em C pode ser dividido em vários arquivos Arquivos fonte com extensão.c Denominados de módulos Cada módulo deve
Tipos 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
Relacionamentos 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 [email protected] Objetos
Paradigmas 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
Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.
1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras
Java 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
Ponteiros de Variáveis
Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem
Laboratório de programação II
Laboratório de programação II Herança e Polimorfismo Edson Moreno [email protected] http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando
Classes, 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
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO
ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos picos Definição de estrutura Acessando membros de estruturas O tipo horario com struct Implementando horario com class Escopo
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
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis
Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for
Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C
Estruturas de Dados Revisão de Ponteiros Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros e Arranjos
Introdução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Programaçã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 [email protected] Relembre: Clase RoboSimples Os métodos move() e move(int passos) podem ser reescrito sem redundância de
Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):
Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de
3. 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
C++ Orientado a Objetos
[email protected] [email protected] a@comp org 1 Declaração As variáveis em C++ podem ser de duas diferentes naturezas Uma variável pode conter um VALOR ou um ENDEREÇO VALOR A declaração de uma
#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C
#include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que
Programaçã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
Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.
2. Classes e Objetos Uma classe é um modelo que define os atributos e métodos comuns a um conjunto de objetos de forma encapsulada. Atributos são informações ou dados que descrevem, categorizam ou quantificam
Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?
Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros
Programaçã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(){
Módulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.
Aprendendo Java 2 Rodrigo Mello Ramon Chiara Renato Villela Novatec Editora Ltda. www.novateceditora.com.br 1 Programação Orientada a Objetos O que é Programação Orientada a Objetos? É um paradigma de
Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
Linguagem de Programação II Implementação
Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Criando objeto Definindo valores para os atributos do objeto Método construtor Definindo valores padrão para os atributos dos
ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS
ESTRUTURAS DE DADOS E ALGORITMOS II ANTONIO RAMOS DE CARVALHO JÚNIOR PILHAS TEORIA CONJUNTO ORDENADO DE ITENS NO QUAL NOVOS ITENS PODEM SER INSERIDOS E A PARTIR DO QUAL PODEM SER ELIMINADOS ITENS EM UMA
Uma função pode ser declarada como friend de mais do que uma classe.
FUNÇÕES FRIEND Em C++ temos a possibilidade de quebrar o encapsulamento que a Programação Orientada para Objecto cria e de que tanto se orgulha. Essa facilidade traduz-se por funções e classes friend.
Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III
Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços
Mé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
Programaçã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
