Linguagem de Programação I

Tamanho: px
Começar a partir da página:

Download "Linguagem de Programação I"

Transcrição

1 Linguagem de Programação I Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br

2 C++ e POO Ambientes de desenvolvimento C++ Fundamentação de Orientação a Objetos (OO). Modelagem de sistemas orientada a objetos usando C++ Modelagem de sistemas orientada a objetos. 2

3 Orientação a Objetos Análise e projeto orientados a objetos = decomposição orientada a objetos de um sistema de solware Coisas/en)dades que compõem o sistema = objetos Objetos são instâncias de classes Análise estruturada = foco nos procedimentos

4 Orientação a Objetos O que é um Objeto (em linguagens como C++) É uma variável que Objetos Armazena dados estruturados (como TADs) Possui operações (funções) associadas Atributos Dados Métodos Funções

5 Orientação a Objetos Programa escrito em linguagem OO Conjunto de objetos que se comunicam através de mensagens para a resolução do problema abordado (requisitos funcionais) Mensagens Chamadas a funções que pertencem a um objeto específico Classes são os 6pos dos objetos 5

6 Orientação a Objetos Classes Definem caracterís6cas comuns dos objetos Estados dos objetos Valores dos atributos individuais Cada objeto pertence a uma classe, que define seu comportamento e suas caracterís6cas Conjunto de métodos de um objeto = interface Encapsulamento define a visibilidade 6

7 Herança Hierarquia de classes Classes mais especializadas herdam das mais genéricas Atributos e métodos são herdados Classe filha é um 6po de Classe Pai 7

8 Herança class Animal { int idade; public: Animal(int id) :idade(id) { void come(); void dorme(); class Ave: public Animal { string nome; public: Ave(int, const string&); void voa(); void botaovo(); 8

9 Herança int main() { Ave A(2, Patativa ); Animal B(3); A.come(); A.dorme(); B.come(); B.dorme(); A.voa(); A.botaOvo(); 9

10 Herança class Animal { int idade; public: Animal(int id) :idade(id) { void come(); void dorme(); class Ave: public Animal { string nome; public: Ave(int, const string&); void dorme(); 10

11 Herança int main() { Ave A(2, Patativa ); Animal B(3); A.come(); // chama Animal::come() A.dorme(); // chama Ave::dorme() B.come(); // Animal::come() B.dorme(); // Animal::dorme() 11

12 Aninhamento de classes #ifndef CWINDOW_H #define CWINDOW_H class CWindow { class Canvas { COLORREF textcolor; COLORREF linecolor; // etc... public: void settextcolor (COLORREF newcolor); int x, y; // Posição na tela int cx, cy ; // Largura e altura Canvas* my_canvas; public:... int settextcolor(colorref cor); int textout(int x, int y, char* text); // Texto em x,y #endif // CWINDOW_H 12

13 Aninhamento de classes #include CWindow.h void CWindow::setTextColor (COLORREF cor) { my_canvas->settextcolor(cor); void CWindow::Canvas::setTextColor (COLORREF newcolor) { textcolor = newcolor; 13

14 Ciclo de vida de objetos C++ oferece mecanismos para automa6zar a inicialização e a finalização de objetos Alocação e liberação dos recursos Métodos construtores e destrutores 14

15 Ciclo de vida de objetos Métodos construtores Mesmo nome da classe Chamada automá6ca na declaração Pode receber parâmetros Polimorfismo se aplica 15

16 Ciclo de vida de objetos class CoisaX { int i; public: CoisaX(); void f() { CoisaX a; 16

17 Ciclo de vida de objetos class Pessoa { int idade; public: Pessoa(int i); Pessoa::Pessoa(int i) { idade = i; void f() { Pessoa a(18); //... 17

18 Ciclo de vida de objetos Método destrutor Função chamada sempre que o escopo de um objeto se encerra Cada classe só pode ter um método destrutor Método destrutor não recebe parâmetros Nem retorna nada class Coisa { public: ~Coisa(); 18

19 Ciclo de vida de objetos class Pessoa { int idade; public: Pessoa(int i); // Constructor ~Pessoa();// Destructor void setidade(int i); int getidade(); Pessoa::Pessoa(int i) { idade = i; Pessoa::~Pessoa() { cout << "Destrutor" << endl; void Pessoa::setIdade(int i) { idade = i; int Pessoa::getIdade() { return idade; 19

20 Ciclo de vida de objetos int main() { cout << "Escopo externo" << endl; { Pessoa p(35); cout << "Criou um objeto" << endl; cout << "Idade: "<< p.getidade() << endl; cout << "Escopo externo 2" << endl; // O que é exibido na tela? 20

21 Ciclo de vida de objetos class Y { int i; class X { int i; X(int k); Y a, b, c[4]; // OK, existe construtor default na classe Y X d(3); // OK X e, f[3]; // Erro! não existe construtor default para X 21

22 Sobrecarga de funções Em C Funções diferentes para 6pos diferentes int escalar_int(int[],int[],int); float escalar_float(float[],float[],int); Em C++ Sobrecarga (polimorfismo ad-hoc) Através da definição da assinatura (parâmetros) int escalar(int[],int[],int); float escalar(float[],float[],int); 22

23 Sobrecarga de funções class Ponto { private: int x, y; public: Ponto(); Ponto(int, int); Ponto::Ponto(int xx, int yy) { x = xx; y = yy; Ponto::Ponto() { x = 0; y = 0; 23

24 Sobrecarga de funções int main() { Ponto A, B(3, 4); Ponto *p = new Ponto(3, 4); Ponto *p1 = new Ponto; Ponto Vpoints[10];... 24

25 Sobrecarga de funções class Ponto { private: int x, y; public: Ponto(int = 0, int = 0); //Valores default Ponto::Ponto(int xx, int yy) { x = xx; y = yy; 25

26 Constantes const const versus #define const tem 6po (pode ser testado pelo compilador) Iniciada na declaração class X { const int i = 10; const int j = i + 10; public: X(int ii); void f() const; //... const X a; 26

27 Constantes class X { const int i; // atributo constante public: X(int ii); // etc... X::X(int ii) { i = ii; // Não pode, pois i é constante X::X(int ii) : i(ii) { // OK! 27

28 Inicialização class B { int t; public: B (int tt); B::B(int tt) : t(tt) { class C { const int size; B b; public: C( int sz, int bt ); C::C(int sz, int bt) : size(sz), b(bt) { 28

29 Ciclo de vida de objetos C++ oferece mecanismos para automa6zar a inicialização e a finalização de objetos Alocação e liberação dos recursos Métodos construtores e destrutores 29

30 Ciclo de vida de objetos Métodos construtores Mesmo nome da classe Chamada automá6ca na declaração Pode receber parâmetros Polimorfismo se aplica 30

31 Ciclo de vida de objetos class CoisaX { int i; public: CoisaX(); void f() { CoisaX a; 31

32 Ciclo de vida de objetos class Pessoa { int idade; public: Pessoa(int i); Pessoa::Pessoa(int i) { idade = i; void f() { Pessoa a(18); //... 32

33 Ciclo de vida de objetos Método destrutor Função chamada sempre que o escopo de um objeto se encerra Cada classe só pode ter um método destrutor Método destrutor não recebe parâmetros Nem retorna nada class Coisa { public: ~Coisa(); 33

34 Ciclo de vida de objetos class Pessoa { int idade; public: Pessoa(int i); // Constructor ~Pessoa();// Destructor void setidade(int i); int getidade(); Pessoa::Pessoa(int i) { idade = i; Pessoa::~Pessoa() { cout << "Destrutor" << endl; void Pessoa::setIdade(int i) { idade = i; int Pessoa::getIdade() { return idade; 34

35 Sobrecarga de funções class Ponto { private: int x, y; public: Ponto(); Ponto(int, int); Ponto::Ponto(int xx, int yy) { x = xx; y = yy; Ponto::Ponto() { x = 0; y = 0; 35

36 Sobrecarga de funções int main() { Ponto A, B(3, 4); Ponto *p = new Ponto(3, 4); Ponto *p1 = new Ponto; Ponto Vpoints[10];... 36

37 Sobrecarga de funções class Ponto { private: int x, y; public: Ponto(int = 0, int = 0); //Valores default Ponto::Ponto(int xx, int yy) { x = xx; y = yy; 37

38 Inicializadas Variáveis na primeira vez sta)c em que o programa realiza a declaração da variável Valor é man6do de uma chamada para outra Área de variáveis está6cas do programa (não são criadas na pilha) int count() { static int num = 0; int x = 0; num++; return num; 38

39 Objetos sta)c Construtor chamado apenas uma vez No momento em que a thread de execução do programa executa pela primeira vez o código da função que instancia o objeto O destrutor de um objeto sta6c somente é executado ao término do programa Objeto global Construtor chamado antes do main() Destrutor chamado ao término do programa 39

40 Objetos sta)c #include <iostream> using namespace std; class Obj { char c; // Identifier public: Obj(char cc) : c(cc) { cout << "Obj::Obj() for " << c << endl; ~Obj() { cout << "Obj::~Obj() for " << c << endl; Obj a('a'); // Global void f() { static Obj b('b'); void g() { static Obj c('c'); 40

41 Objetos sta)c int main() { cout << "inside main()" << endl; f(); // Calls static constructor for b // g() not called, c not constructed cout << "leaving main()" << endl; ///:~ 41

42 Atributos sta)c Implementam conceito de atributos de classe Todos os objetos de uma classe compar6lham os class Ponto{ atributos está6cos int x, y; static int cont; //... Ponto Ponto_1, Ponto_2; 42

43 Atributos sta)c Acesso definido por encapsulamento Funções membro podem acessar, outras partes se público Atributos está6cos podem ser acessados antes da instanciação de qualquer objeto da classe Espaço de memória reservado antes da instanciação de qualquer objeto Somente constantes está6cas podem ser definidas na declaração de uma classe Atributos está6cos devem ser redeclaradas no escopo da classe 43

44 Atributos sta)c class Ponto{ int x, y; static int cont; //... int Ponto :: cont = 7; class Buffer { static const int buffsize = 256; char buff[buffsize]; //... 44

45 Métodos sta)c Funções membro que Podem ser chamadas através da classe, e não de uma instância par6cular Não podem manipular membros não está6cos da classe Só manipulam atributo está6cos! class Ponto{ int x, y; static int cont; static int getcont() { return cont; int Ponto::cont = 0; int main() { cout << Cont: <<Ponto::getCont()<<endl; return 0; 45

46 Padrão de projeto: Singleton Classe que possui apenas uma instância Instância disponível globalmente no código Há várias situações que uma classe pode ter apenas uma instância Recursos escassos (interface de rede, spool de impressão), Gerenciador de propriedades de um sistema etc. Construtor privado Usa-se método sta)c Instance() 46

47 Padrão de projeto - Singleton class KbdBuffer { public: char getch(); // reads from the buffer static KbdBuffer *Instance(); private: KbdBuffer(); // the constructor static KbdBuffer *instanceptr; // pointer to instance KbdBuffer *KBdBuffer::instancePtr = 0; // reset pointer KbdBuffer *KbdBuffer::Instance() { if (instanceptr == 0) // if pointer is null... instanceptr = new KbdBuffer; return(instanceptr) Utilização: char foo = KbdBuffer::Instance() -> getch(); 47

48 Ponteiros, referências e memória Como u6lizar ponteiros e referências C/C++ Passagem de parâmetros em C++ Passagem por referência Alocação dinâmica de memória double *ptd, *pte, *ptf; ptd = new double; pte = new double(7); ptf = new double[5]; ptf[0] = 1.; ptf[3] = 4; ptf[4] = 9.; delete ptd; delete pte; delete[] ptf; 48

49 Ponteiros, referências e memória class Carro { double velocidade; public: Carro (double vel = 0) : velocidade(vel) { ~Carro(); { Carro *pt1 = new Carro(5.0); Carro *pt2 = new Carro[7]; delete pt1; // Destrutor de carro chamado (1 vez) delete[] pt2; // Destrutor de carro chamado (7 vezes) 49

50 Ponteiros, referências e memória Carro f ( double velocidade) { Carro c(velocidade); //... return c; // cópia do carro c Carro& g ( Carro& car) { //... return car; // retorna uma referência para car! Carro c1; Carro &c2 = g(c1); // c2 referencia c1 Carro c3 = g(c1); // c3 é uma cópia de c1 50

51 Ponteiros, referências e memória Carro* g ( Carro& car) { //... return &car; // retorna o endereço de car Carro c1; Carro * ptc = g(c1); ptc->acelera(); // altera c1, utilizando ptc 51

52 Ponteiros, referências e memória int* f(int* x) { (*x)++; return x; // OK, x esta fora deste escopo int& g(int& x) { x++; // Mesmo efeito que f() return x; // OK, fora deste escopo int& h() { int q; //return q; // Erro static int x; return x; // OK, x vive fora do escopo int main() { int a = 0; f(&a); g(a); int &j = h(); 52

53 Ponteiros, referências e memória Referências constantes Uso com objetos temporários (são sempre constantes) void f(int&) { void g(const int&) { int main() { //! f(1); // Error g(1); 53

54 Construtor de cópia Executado quando há passagem de parâmetros ou retorno por cópia Objeto é declarado e inicializado por intermédio de um outro objeto da mesma classe Cópia do estado (valor de todos atributos) de um objeto 54

55 Construtor de cópia class Big { private: // Um monte de atributos Big bigfun(big b) { // Passagem por cópia (chama const. de cópia) //... return b; // Retorno por cópia (chama const. de cópia) int main() { Big B, B2; // Construtor sem parâmetros (default) Big B3(B); // Construtor de cópia Big B4 = B3; // Construtor de cópia B = B3; // NÃO há chamada ao construtor de cópia (atrib.) B2 = bigfun(b); // Construtor de cópia 2 vezes //(passagem e retorno) Big B5 = bigfun(b2); // Seriam 3 vezes, mas o compilador // pode ser esperto ==> 2 55

56 Construtor de cópia Construtor de cópia recebe uma referência constante para objeto a ser copiado Evita recursão infinita (caso recebesse por cópia) Para impedir que objetos de uma classe sejam passados por valor, cria-se um construtor de cópia privado 56

57 Construtor de cópia class NoCC { int i; NoCC(const NoCC&); // Privado, não precisa definição public: NoCC(int ii = 0) : i(ii) { void f(nocc); int main() { NoCC n; // f(n); // Error: copy-constructor called // NoCC n2 = n; // Error: c-c called // NoCC n3(n); // Error: c-c called 57

58 Ponteiro this Objetos acessam atributos de uma classe de forma transparente Objetos compar6lham as instruções (código) dos métodos da classe dos quais são instâncias Iden6ficação da instância é feita através do ponteiro this É implicitamente criado para cada função Aponta para o objeto que chamou a função 58

59 Ponteiro this class Date { int d, m, y; public: Date( int dd=0, int mm=0, int yy=0); Date& add_year(int n); // Adiciona n anos Date& add_month(int n); // Adiciona n meses Date& add_day(int n); // Adiciona n dias Date& Date::add_year(int n) { if (d==29 && m==2 &&!leapyear (y+n)) { // Cuida do 29/02 d = 1; m = 3; y +=n; return *this; // Semelhante para add_month e add_day Date dt; dt.add_day(4).add_month(2).add_year(1); 59

60 Atributos dinâmicos Atributos dinâmicos Membro é ponteiro e memória é alocada dinamicamente Geralmente nos construtores ou outros métodos de inicialização Ao término do escopo dos objetos memória deve ser desalocada para os atributos dinâmicos Método destrutor Construtor de cópia sobrecarregado Evitar problemas na passagem de parâmetros por cópia 60

61 Atributos dinâmicos class MeuVetor { double* valores; int dim; public: MeuVetor(int n = 1, double val = 0); ~MeuVetor(); MeuVetor(const MeuVetor&); void mostra (); MeuVetor::MeuVetor(int n, double val) : dim(n) { valores = new double[dim]; for (int i = 0; i < dim; i++) valores[i] = val; MeuVetor::~MeuVetor() { delete[] valores; 61

62 Atributos dinâmicos void MeuVetor::mostra () { for(int i=0; i<dim; i++) std::cout << valores[i] << std::endl; MeuVetor::MeuVetor(const MeuVetor& vc) : dim(vc.dim) { valores = new double[dim]; for (int i = 0; i < dim; i++) valores[i] = vc.valores[i]; void f(meuvetor vet) { void main() { MeuVetor vet(30, 7.) f(vet); vet.mostra(); 62

63 Polimorfismo Quando se trabalha com herança pública, pode-se realizar upcas)ng A classe derivada é um 6po da classe base e um objeto instância da classe derivada pode ser u6lizado como um da classe base quando necessário void f(animal &an) { an.come() ; an.dorme(); void g(ave &av) { f(av); 63

64 Polimorfismo Upcast também pode ser realizado em ponteiros e referências, sem a necessidade de cast explícito Ave av; Animal * an1 = & av; Animal & an2 = av; an1-> come(); an1->dorme(); // an1->botaovo(); // ERRO!!! 64

65 Polimorfismo E quando um método de Animal, por exemplo, Animal::come, é sobrescrito na classe Ave? class Ave: public Animal { public: void come( ); void voa( ); void botaovo( );... Ave av; Animal * an = &av; an-> dorme (); // Animal::dorme() an-> come (); // Animal::come()! 65

66 Polimorfismo e funções virtuais O Polimorfismo provê outra dimensão de separação entre interface e implementação, desacoplando o quê de como, melhorando a organização do código gerado e o seu entendimento. 66

67 Polimorfismo e funções virtuais Herança - classes e subclasses (sub6pagem) Classes diferentes, derivadas de um mesmo 6po base, podem ser tratadas como se fossem de um único 6po Pode-se trabalhar com essas diferentes classes de maneira única Cada classe poderá possuir uma maneira própria de tratar situações específicas 67

68 Polimorfismo e funções virtuais Binding Ligação entre objetos e funções Quando a ligação é efetuada antes da execução do programa ela é denominada de ligação está6ca (early binding) Efetuada pelo compilador e pelo linker 68

69 Polimorfismo e funções virtuais No exemplo, o compilador não consegue determinar a função a ser chamada a única coisa que ele conhece é o 6po do ponteiro (Animal*) que está sendo u6lizado class Ave: public Animal { public: void come( ); void voa( ); void botaovo( );... Ave av; Animal * an = &av; an-> dorme (); // Animal::dorme() an-> come (); // Animal::come()! 69

70 Polimorfismo e funções virtuais Solução: ligação dinâmica (late binding) Ligação feita em tempo de execução Baseada no 6po do objeto apontado e não no 6po do ponteiro Em C++ funções ligadas dinamicamente devem ser declaradas como virtuais na classe base Objetos devem ser manipulados por meio de referências para a classe base 70

71 Polimorfismo e funções virtuais Somente a declaração da função necessita da palavra chave virtual O uso da palavra chave nas classes derivadas é redundante 71

72 Polimorfismo e funções virtuais class Animal { public: virtual void come( ); virtual void dorme( ); class Ave: public Animal { public: void come( ); void voa( ); void botaovo( ); void g(animal &an) { an.come(); int main() { Ave av; Animal an1; g(av); // OK: upcasting! g(an1); // OK! Animal * ptan = &av; //up ptan-> dorme (); // Animal::dorme() ptan-> come (); // Ave::come() return 0; 72

73 Polimorfismo e funções virtuais Polimorfismo Funções homônimas para lógicas semelhantes ao longo de uma hierarquia Ligação dinâmica necessária para que haja polimorfismo Em C++, funções virtuais Classe base tem funções que devem ter comportamentos diferentes em suas derivadas Funções virtuais na classe base Redefinidas nas classes derivadas 73

74 Polimorfismo e funções virtuais class Point { /*... */ class Color{ /*... */ enum Kind { circle, triangle, square class Shape { Kind k; Point center; Color col; public: void draw( ); void rotate(float ang); //... Já saber todos? void Shape :: draw( ) { switch (k) { case circle: // desenha o circulo break; case triangle: // desenha o triangulo break; case square: // desenha o quadrado break; // end switch Ruim 74

75 Polimorfismo e funções virtuais Solução Agrupar o que é comum a todas as subclasses em uma classe base Ex. Shapes possuem uma forma, uma cor, podem ser desenhados, girados, etc. Propriedades e métodos específicos em classes derivadas Ex. de triângulos, círculos e demais shapes Herança 75

76 Polimorfismo e funções virtuais class Shape { //... public: void draw( ) { cout << Shape::draw ; class Triangle : public Shape { //... public: void draw( ) { cout << Triangle::draw ; void teste(shape & a) { a.draw(); int main() { Triangle t; teste(t); // Chamar de Shape, não de Triangle 76

77 Polimorfismo e funções virtuais 77

78 Polimorfismo e funções virtuais class Shape{ //... virtual void draw( ); class Triangle : public Shape { //... virtual void draw( ); // virtual é opcional void teste(shape & a) { a.draw(); int main() { Triangle t; teste(t); // Agora, chama draw de Triangle! 78

79 Referências Notas de aula do Prof. Renato Maia (Unimontes) Notas de aula do Prof. Renato Mesquita (UFMG) 79

80 Linguagem de Programação I Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Fundamentação de Orientação a Objetos (OO). Modelagem de sistemas orientada a objetos usando C++ Modelagem

Leia mais

Programação Orientada a Objetos CLASSES E OBJETOS

Programaçã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 mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Fundamentação de Orientação a Objetos (OO). Modelagem de sistemas orientada a objetos usando C++ Modelagem

Leia mais

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Programaçã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 mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Herança e composição em C++ Polimorfismo e funções virtuais C++ e POO 2 Carro private: String modelo; String

Leia mais

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Programaçã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 mais

Programação Orientada a Objetos

Programaçã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 mais

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Programaçã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 mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br C++ e POO Fundamentação de Orientação a Objetos (OO) Sintaxe básica de C++ Modelagem de sistemas orientada a

Leia mais

Linguagem de Programação I

Linguagem 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 mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Classes e Objetos Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Efetuando Abstração de Dados com as Linguagens C e C++ O capítulo 4 do

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Herança e composição em C++ C++ e POO 2 Carro private: String modelo; String chassis; Motor m; liga(); acelera(int);

Leia mais

Programação Orientada a Objetos

Programaçã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 mais

Fundamentos de Programação

Fundamentos 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 mais

Fundamentos de Programação 2

Fundamentos 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 mais

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Programaçã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 mais

C com introdução a OO

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

Leia mais

Laboratório de programação II

Laborató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 mais

Classes e Encapsulamento

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)

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

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

Leia mais

Um aluno digitou o código C++ a seguir:

Um aluno digitou o código C++ a seguir: Questão Pai Filha Assunto avaliado: Polimorfismo. Um aluno digitou o código C++ a seguir: #include #include #include #include using namespace std; class Pai Pai()

Leia mais

Física Computacional 7 Classes

Física Computacional 7 Classes Física Computacional 7 Classes 1. Classes a. Construtores e destruidores fc.trabalhosalunos@gmail.com Física Computacional - MEFT 2013/14 P. Bicudo, P. Martins, M. Cardoso 1 As classes possuem métodos

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos Eduardo Batista. Centro de Informática - UFPB Linguagem de Programação I Carlos Eduardo Batista Centro de Informática - UFPB bidu@ci.ufpb.br Motivação para o uso de C++ para o aprendizado de POO Quando usar C e quando usar C++ C++ versus Java Ambientes

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 # 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 mais

Linguagem de Programação C++

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

Leia mais

Classes e Objetos. Sintaxe de classe em Java

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

Leia mais

PCS3111. 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 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 mais

INF Estruturas de dados avançadas

INF Estruturas de dados avançadas INF1010 - Estruturas de dados avançadas Introdução a C++ PUC-Rio 15 de março de 2017 Roteiro Introdução Primeiro programa em C++ Programação orientada a objetos Classes em C++ Atributos e métodos Construtores

Leia mais

Carlos Eduardo Batista. Centro de Informática - UFPB

Carlos 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 mais

Programação Orientada por Objectos em C++ (alguns conceitos) Algoritmos e Estruturas de Dados 2009/2010. Três maneiras de passar parâmetros:

Programação Orientada por Objectos em C++ (alguns conceitos) Algoritmos e Estruturas de Dados 2009/2010. Três maneiras de passar parâmetros: Programação Orientada por Objectos em C++ (alguns conceitos) Algoritmos e Estruturas de Dados 2009/2010 Mestrado Integrado em Engenharia Informática e Computação Passagem de parâmetros Três maneiras de

Leia mais

Programação por Objectos. Java

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

Leia mais

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 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

Leia mais

Linguagem de Programação III

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

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

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

Leia mais

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

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

Leia mais

Linguagem de Programação II Implementação

Linguagem de Programação II Implementação Linguagem de Programação II Implementação Prof. Alessandro Borges 2 Tópicos Implementação em Java Variáveis Palavras reservadas Pacotes Identificador this Acessando membros de outros objetos API Java Nossa

Leia mais

Instituto de Informática Estrutura de Dados II

Instituto de Informática Estrutura de Dados II Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O

Leia mais

Linguagem 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 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 mais

CPP. C plus plus versus Java

CPP. C plus plus versus Java CPP C plus plus versus Java Principais Diferenças Herança a múltiplam Destructores e garbage colector Override de operadores Máquina virtual Templates e genéricos Referências e ponteiros Métodos virtuais

Leia mais

Introdução à Programação. Encapsulamento e Herança

Introdução à Programação. Encapsulamento e Herança Introdução à Programação Encapsulamento e Herança Tópicos da Aula Hoje, aprenderemos conceitos mais avançados de Orientação a Objetos Encapsulamento Usando modificadores de acesso em C++ Herança Importância

Leia mais

//conteúdo do arquivo pacote.h

//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 mais

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes

Leia mais

Introdução ao C++ Ambientes de Desenvolvimento Avançados. 2 de Outubro de 2002 ADA / DEI - ISEP 2002/2003 1

Introdução ao C++ Ambientes de Desenvolvimento Avançados. 2 de Outubro de 2002 ADA / DEI - ISEP 2002/2003 1 Introdução ao C++ Ambientes de Desenvolvimento Avançados 2 de Outubro de 2002 ADA / DEI - ISEP 2002/2003 1 C++! Extensão ao c! Facilita a representação de tipos de dados abstractos (tipo classe)! Suporte

Leia mais

Técnicas de Programação:

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.

Leia mais

Linguagens de Programação Aula 12

Linguagens de Programação Aula 12 Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução

Leia mais

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa

ANHANGUERA ESTRUTURA DE DADOS AULA 04 MATRIZES, LISTAS E ALOCAÇÃO DINÂMICA. Prof. Thomás da Costa ANHANGUERA 2015.2 ESTRUTURA DE DADOS AULA 04 Prof. Thomás da Costa thomascosta@aedu.com O que é: Matrizes São vetores que possuem duas ou mais dimensões para armazenar valores. Uma matriz de duas dimensões,

Leia mais

Namespaces, Classes e Métodos.

Namespaces, 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 mais

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

Introdução à Programação. Conceitos Básicos de Orientação a Objetos Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes

Leia mais

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

AULA 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 mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

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(){

Leia mais

POO e C++: Herança e Polimorfismo

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

Leia mais

2. Introdução à Programação e Análise. Orientada a Objetos

2. Introdução à Programação e Análise. Orientada a Objetos Programação Orientada a Objetos em C++ Renato Cardoso Mesquita Departamento de Eng. Elétrica da UFMG renato@cpdee.ufmg.br 2. Introdução à Programação e Análise.......... Orientada a Objetos 2.1. Introdução

Leia mais

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. 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

Leia mais

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015 PCS - 3111 Laboratório de Programação Orientada a Objetos 1a. Prova 02 de Setembro de 2015 Questão 1 (2,6) Deseja-se implementar um programa que recebe um mês e um dia atual de um ano e o mês e o dia de

Leia mais

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 11: Herança et al. (Funções Virtuais, Polimorfismo, Herança Múltipla, Funções Virtuais Puras e Classes Abstratas.) Prof. Jean Marcelo

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - 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 mais

Fundamentos de Programação 2

Fundamentos de Programação 2 Fundamentos de Programação 2 ET43G. Polimorfismo. Classes abstratas e interfaces. Aula 12 Prof. Daniel Cavalcanti Jeronymo Universidade Tecnológica Federal do Paraná (UTFPR) Engenharia Eletrônica 3º Período

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Relacionamentos entre objetos

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 reinaldo@cefet-al.br Objetos

Leia mais

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETRÔNICA (DAELN) 2 a Prova

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETRÔNICA (DAELN) 2 a Prova UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE ELETRÔNICA (DAELN) Curso: Engenharia Eletrônica, Disciplina: Fundamentos de Programação II (IF62C), Turma: S Professores: Hermes Del

Leia mais

Fundamentos 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 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

Aprendendo. Java 2. Rodrigo Mello Ramon Chiara Renato Villela. Novatec Editora Ltda.

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

Leia mais

Programação Java (nível intermediário) 4. Polimorfismo

Programação Java (nível intermediário) 4. Polimorfismo Programação Java (nível intermediário) 4 Polimorfismo Introdução Uma linguagem orientada a objetos nos permite definir novos tipos para variáveis Nós definimos um novo tipo através de uma classe Este tipo

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

Leia mais

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Java Parte I mleal@inf.puc-rio.br 1 Introdução LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++. Todos os programas Java são compilados e interpretados. O compilador

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-7 Reutilização de Classes Prof. Esbel Tomás Valero Orellana Até Aqui Introdução a POO e sua implementação em Java Atributos, métodos e encapsulamento dos mesmos Trabalhando

Leia mais

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Aula 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 mais

Exercícios... Capítulo 15. if62c. prof. Robinson Vida Noronha. Monday, March 23, 15

Exercícios... Capítulo 15. if62c. prof. Robinson Vida Noronha. Monday, March 23, 15 Exercícios... Capítulo 15 if62c prof. Robinson Vida Noronha 1 15.1.a) Em C++, é possível ter várias funções com o mesmo nome, que operam sobre diferentes tipos ou números de argumentos. Isso é chamado

Leia mais

Herança em C++ Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2006/2007) Herança

Herança em C++ Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2006/2007) Herança Herança em C++ Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2006/2007) FEUP - MIEEC Prog2-2006/2007 Herança Herança permite usar classes já definidas para derivar novas classes nova classe

Leia mais

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void //conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();

Leia mais

Introdução à Programação Orientada a Objetos em C++

Introdução à Programação Orientada a Objetos em C++ Introdução à Programação Orientada a Objetos em C++ Disciplina de Programação Científica II Aula 12 de 18 24/05/2013 Professor Giovani Gracioli giovanig@gmail.com Objetivos Os objetivos dessa aula são:

Leia mais

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga Professora Sheila Cáceres Sobrecarga (overloading) Na mesma classe podemos definir vários métodos com o mesmo nome Sobrecarga O tipo

Leia mais

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença

Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença C++ Fábio da Fontoura Beltrão Felipe Augusto Chies Lucas Fialho Zawacki Marcos Vinicius Cavinato Matheus de Carvalho Proença Primeiro Programa //Primeiro Programa C++ #include int main() { std::cout

Leia mais

Classes, Métodos e Propriedades

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

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização

Leia mais

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento. Introdução Atributos, métodos e encapsulamento joao@ecomp.uefs.br Atributos Ipos de acesso: private, public, protected e default Encapsulamento Métodos Construtores Criando objetos Departamento de Ciências

Leia mais

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programaçã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 mais

Programação Orientada a Objetos para Redes de Computadores

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++ - Herança Herança Criação de uma nova classe de uma

Leia mais

LINGUAGEM DE PROGRAMAÇÃO C++ CLASSES E OBJETOS

LINGUAGEM DE PROGRAMAÇÃO C++ CLASSES E OBJETOS LINGUAGEM DE PROGRAMAÇÃO C++ E OBJETOS Roberto S. Bigonha UFMG 4 de abril de 2012 ESTRUTURAS ESTRUTURAS ESTRUTURAS Cada estrutura (struct) cria um novo tipo Dois tipos estruturas de nomes distintos são

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores

Leia mais

The Cyclops Project. Introdução: C++

The 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 mais

Estrutura de dados 1. Ponteiros

Estrutura de dados 1. Ponteiros Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem

Leia mais

Linguagem de Programação I

Linguagem 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 mais

1 Introdução e Conceitos básicos

1 Introdução e Conceitos básicos 1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2

Leia mais

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

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

Leia mais

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++ OO Engenharia Eletrônica Orientação a Objetos - Programação em C++ Slides 12: Const, Static, NameSpace e Nested Prof. Jean Marcelo SIMÃO Métodos Const #ifndef _MINHASTRING_H_ #define _MINHASTRING_H_ class

Leia mais

Linguagens de Programação

Linguagens 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 mais

Tipos Abstratos de Dados (TAD)

Tipos Abstratos de Dados (TAD) 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

Leia mais

Aula 27: Estruturas heterogêneas e alocação dinâmica

Aula 27: Estruturas heterogêneas e alocação dinâmica Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-5 Estruturas de Decisão e Controle. Arrays em Java Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de

Leia mais

Aula 26: Estruturas heterogêneas

Aula 26: Estruturas heterogêneas Aula 26: Estruturas heterogêneas Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória Ponteiro Utilização

Leia mais

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis

Leia mais

Linguagem de Programação C++

Linguagem 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 mais

Diagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15

Diagrama de Classes. Conceitos Básicos. prof. Robinson Vida Monday, April 20, 15 Diagrama de Classes Conceitos Básicos prof. Robinson Vida (vida@utfpr.edu.br) 1 Função do Diagrama de Classes Permitir a visualização das classes que comporão o sistema com seus respectivos atributos e

Leia mais

Passagem de parâmetros

Passagem de parâmetros Programação com Classes em C++ (cont.) João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) FEUP - LEEC - AED - 2004/2005 Passagem de parâmetros Três maneiras de passar parâmetros: Por

Leia mais

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches CES-11 Algoritmos e Estruturas de Dados Carlos Alberto Alonso Sanches Juliana de Melo Bezerra Introdução Programação Estruturada Também chamada de Programação Modular ou Procedimental Baseia-se no conceito

Leia mais

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces Professora Sheila Cáceres Polimorfismo Polimorfismo Polimorfismo é a característica única de linguagens orientadas

Leia mais