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

Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Introdução à Programação

Conceitos Básicos de

Orientação a Objetos

Page 2: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

2

Tópicos da Aula

Aprenderemos fundamentos do paradigma orientado

a objetos, mas antes veremos o que é paradigma

Conceito de paradigma

Diferentes paradigmas na computação

Depois veremos o que é orientação a objetos

Conceitos de orientação a objetos

Programação orientada a objetos x Programação imperativa

Estrutura de um programa orientado a objetos em C++

Construtores

Criação de objetos

Exemplo de aplicação orientada a objetos

Page 3: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Paradigmas de Programação

Linguagens de programação são baseadas em

vários conceitos:

Tipos de dados, variáveis e armazenamento, controle,

abstração de dados, abstração procedural, sistema de

tipos,etc

Diferentes seleções dos conceitos definem o estilo

de programação ou Paradigma

Afeta a forma de pensar em como escrever um programa

A forma como estes conceitos são agrupados em

uma linguagem de programação definem que

paradigma é suportado por esta linguagem

Page 4: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Paradigmas de Programação

Podemos encontrar 6 grandes paradigmas suportados pelas linguagens de programação:

Imperativo

Uso de comandos, variáveis e procedimentos

Primeiras linguagens de programação são deste paradigma

Ex: Fortran, Pascal, C, etc

Orientação a Objetos

Uso de classes, objetos, herança, polimorfismo, maior abstração de dados, encapsulamento (implementação)

Evolução do paradigma imperativo

Ex: Smalltalk, C++, Eiffel, Java, C#, etc

Page 5: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Paradigmas de Programação

Funcional

Uso de expressões e funções, ausência de

variáveis e comandos

Ex: ML, Haskell

-- Exemplo em Haskell

-- type

factorial :: Integer -> Integer

-- using recursion

factorial 0 = 1

factorial n = n * factorial (n - 1)

Page 6: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Paradigmas de Programação

Lógico

Relações lógicas entre entradas e saídas,

asserções

Ex: Prolog, Mercury

/* Exemplo em Prolog */

mother_child(trude, sally). /* fato */

father_child(tom, sally).

father_child(tom, erica).

sibling(X, Y) :- parent_child(Z, X), parent_child(Z, Y).

parent_child(X, Y) :- father_child(X, Y). /* clausula*/

parent_child(X, Y) :- mother_child(X, Y).

?- sibling(sally, erica).

Yes

Page 7: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Paradigmas de Programação

Concorrente

Execução concorrente de processos, abstração de

controle de sincronização (inter-processos, acesso

a recursos, etc)

Ex: Occam, Java, Concurrent C, etc

Scripting

Sistema de tipos dinâmica, abstração de

processamento de Strings, suporte a interfaces

gráficas

Ex: Python, Java Script, Tcl

Page 8: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

O que é Orientação a Objetos?

É considerar que tudo é um objeto:

Os sistemas são objetos

Os dados manipulados e comunicados entre os

sistemas são objetos

Cada parte de um sistema (sub-sistema) é um objeto

Os dispositivos eletrônicos são objetos

A interface com o usuário é um objeto, composto de

vários outros objetos...

8

Page 9: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Objeto

Podemos definir objeto como uma entidade

que possui:

Estado

Características ou propriedades do objeto

Comportamento

Operações que o objeto pode realizar

O comportamento pode examinar ou alterar o

estado de um objeto

9

Page 10: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Objeto DVD

Fonte: http://www.amazon.com

O estado atual do DVD; o que ele está fazendo...

As operações que o DVD pode executar

10

Page 11: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Comportamento Número Saldo

21.342-7 875,32

Crédito

Débito

Operações que uma conta pode executar

O estado atual da conta

11

Objeto Conta Bancária

Page 12: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Estados do Objeto Conta

Número Saldo

21.342-7 875,32

Crédito

Número Saldo

21.342-7 875,32

Crédito

Débito

Crédito(20)

12

Número Saldo

21.342-7 875,32

Crédito

Número Saldo

21.342-7 895,32

Crédito

Débito

Comportamento neste caso mudou o estado do

objeto conta

Page 13: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Classe

Classe é um agrupamento de objetos que têm

propriedades comuns e podem realizar as

mesmas operações

É uma definição que descreve como objetos

pertencentes à classe são estruturados

internamente (quais propriedades e operações

o objeto possui)

Classe é um conceito e o objeto é uma

instância deste conceito

Portanto, podemos ter vários objetos

pertencentes a mesma classe

13

Page 14: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Classe x Objeto

Número Saldo

21.342-7 875,32

Crédito

Número Saldo

11.056-x 1000,32

Crédito

Débito 14

Múltiplos objetos podem ser criados à partir da mesma

classe

Número Saldo

Crédito Débito

Número Saldo

21.342-7 875,32

Crédito

Número Saldo

875,32

Crédito

Débito

21.342-7

Classe Conta

Objeto conta1 Objeto conta2

Page 15: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Classe e Tipo

Tipo é um conjunto de valores relacionados que

são capazes de realizar as mesmas operações

Ex: inteiro, caractere, Conta, Banco, etc

Uma classe define um tipo: o tipo cujos

elementos são objetos com as mesmas

propriedades e comportamento

15

Page 16: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Atributo e Método (1)

Atributo representa alguma propriedade do

objeto

O conjunto de atributos de um objeto determina

o estado do objeto

Um atributo pode conter um valor simples tal

como um número real ou até outro objeto

Método representa uma operação que um

objeto pode fazer

O conjunto de métodos de um objeto determina

o comportamento do objeto

16

Page 17: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Número Saldo

21.342-7 875,32

Crédito

Débito

17

Atributo e Método (2)

Atributos da conta

Comportamento

Métodos de uma conta

Page 18: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Relações entre Objetos

Geralmente, um software é construído a partir de vários

objetos (classes) que se relacionam

As relações de Cliente e Herança são essenciais para

a construção de programas

Classe B é Cliente de classe A, se todo objeto de tipo B

contiver informação sobre um ou mais objetos do tipo A

Classe B é Herdeira de classe A, se B representa uma

versão especializada de A

Métodos e os atributos da classe A se tornam, também, parte

da classe B

Características e comportamento de A são passadas para B

18

Page 19: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Relação Cliente

Número Saldo

21.342-7 875,32

Crédito Cria nova Conta

Transferência

Objeto Banco1

19

Número Saldo

21.342-7 875,32

Crédito

Número Saldo

21.342-7 895,32

Crédito

Débito

Objeto do tipo Banco têm vários objetos do tipo

Conta Banco é cliente de Conta

Banco do Brasil

Nome

Conta1

Conta

Conta1

Conta

Conta1

Conta

Objeto Conta1

Page 20: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Relação Herança

20

Classe Poupança é uma versão especializada de Conta

Métodos e atributos são herdados

Classe Conta

Saldo

Crédito Débito

Número

Saldo

Crédito Débito

Número Juros

Classe Poupança

Page 21: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Utilizando OO para Desenvolver

Programas

Desenvolvimento de uma

solução se torna mais fácil

quando quebramos esta solução

em módulos gerenciáveis

Quando estamos programando,

podemos desenvolver módulos

separados, onde cada um é

responsável por uma certa parte

da solução

Programação Modular

OO facilita a programação

modular

Módulos são as classes e objetos 21

Page 22: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Algumas Considerações sobre OO

Orientação a Objetos Modularidade

Reusabilidade

Extensibilidade

Classe é uma entidade que combina 2 conceitos:

Módulo e Tipo

Módulo é um conceito sintático, pois a decomposição do

sistema em módulos afeta somente a forma como o programa

é escrito, não a funcionalidade dele

Tipo é um conceito semântico, pois o tipo influencia

diretamente a execução do sistema, definindo a forma dos

objetos que são criados e manipulados pelo sistema em tempo

de execução

22

Page 23: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

OO e Linguagens de Programação

Linguagens OO têm em objetos e classes seus

elementos fundamentais para construção de programas

Estruturas da linguagem permitem mapeamento direto dos

conceitos de OO

Porém, é possível fazer um programa OO em uma

linguagem não OO

É possível, também, fazer um programa que não seja OO em

uma linguagem OO

23

Conceito de Orientação a Objetos é independente da linguagem de

programação

Page 24: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Linguagem C++

Criada por Bjarne Stroustrup em 1983

Pode ser vista quase como uma extensão da linguagem

C para dar suporte a OO

Embora quase tudo escrito em C seja compatível com C++,

certos comandos podem ter comportamento diferente em C++

Dá suporte a vários conceitos de OO:

Classe, Herança,Polimorfismo, Encapsulamento

Ainda oferece suporte a tratamento de exceções e tipos

genéricos

Sintaxe da linguagem Java foi inspirada em C++

24

Page 25: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Um Programa Imperativo...

Contém

Uma função principal, por onde começa a execução do programa

Várias funções auxiliares, para modularizar, dividir

o código em partes

Importação de bibliotecas de funções

Pode ainda conter:

Definição de tipos estruturados

Page 26: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

26

Um Programa Orientado a Objetos ...

Tem a classe como a sua construção fundamental :

Um programa é constituído de uma ou mais classes

Que podem ter sido importadas de uma biblioteca de classes

Uma classe contém um ou mais atributos e métodos

Um método é composto de instruções

Page 27: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Ao Invés de Estruturas, Classes!

Define um tipo, com funções que

operam sobre este tipo

Estrutura

Função 1

Função 2

Função 3

Estrutura

Função 1

Função 2

Função 3

Classe

Page 28: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Programação Imperativa x

Programação OO

Programação Imperativa tem como elementos

principais os procedimentos (funções)

Programação OO tem como elementos

principais as classes

Estrutura + funções = classe

Programação OO ainda utiliza :

Herança

Encapsulamento

Polimorfismo

28

Veremos depois!

Page 29: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando o Tipo Conta com

Programação Imperativa

Primeiro passo é definir um tipo estruturado

Conta

29

struct Conta{

double saldo;

char numero[11];

char agencia[11];

};

Page 30: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando as Funções do Tipo

Conta

Depois se define as funções que operam sobre

o tipo Conta

creditar

debitar

getSaldo

criaConta 30

void creditar(struct Conta *c ,double v){

c->saldo = c->saldo + v;

}

Passa-se estrutura (ou endereço de estrutura) como parâmetro

Page 31: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando as Funções do Tipo

Conta

31

void debitar(struct Conta *c,double v){

if (v <= c->saldo)

c->saldo = c->saldo - v;

}

double getSaldo(struct Conta *c){

return c->saldo;

}

Page 32: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando as Funções do Tipo

Conta

32

struct Conta* criaConta(char *num, char* ag) {

struct Conta *retorno;

retorno = (struct Conta *)

malloc (sizeof(struct Conta));

if (retorno == NULL){

printf(“Erro na alocação de memória!”)

} else {

strcpy(retorno->numero, num);

strcpy(retorno->agencia, ag);

retorno->saldo = 0;

}

return retorno;

}

Alocando dinamicamente uma estrutura

Page 33: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Usando o Tipo Conta em Programação

Imperativa

33

int main() {

struct Conta *conta1;

conta1 = criaConta(“1234-5”,”007-x”);

if (conta1 == NULL){

printf(“Erro na alocação de memória!”)

} else {

creditar(conta1,300);

printf(“Saldo da conta = %lf\n”,getSaldo(conta1));

debitar(conta1,200);

printf(“Saldo da conta = %lf\n”,getSaldo(conta1));

}

return 0;

}

Page 34: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando o Tipo Conta com

Programação OO (C++)

Primeiro passo é definir a classe Conta

Atributos e Métodos

34

class Conta{

private:

double saldo;

char numero[11];

char agencia[11];

public:

void creditar(double v);

void debitar(double v);

double getSaldo();

Conta(char* num, char* ag);

};

Atributos

Métodos

Construtor

Page 35: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando os Métodos do Tipo

Conta

35

void Conta::creditar(double v){

saldo = saldo + v;

}

Indica que método faz parte da classe Conta

Não precisa passar objeto como parâmetro!

saldo é um atributo que foi definido na classe Conta

Page 36: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando os Métodos do Tipo

Conta

36

void Conta::debitar(double v){

if (v <= saldo)

saldo = saldo - v;

}

double Conta::getSaldo(){

return saldo;

}

Page 37: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Construtor

Tipo especial de método que é chamado no ato de

criação de um objeto da classe desejada

Importante para fazer algumas inicializações no objeto

Uma classe pode ter mais de um construtor

O que diferencia um construtor do outro é a ordem e/ou tipo

e/ou quantidade de parâmetros

Em C++, deve ter o mesmo nome da classe

Não possui tipo de retorno

Não é obrigatório definir um construtor

Existe em C++ um construtor default sem parâmetros

37

Page 38: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Implementando o Construtor do Tipo

Conta

38

Conta::Conta(char *num, char* ag) {

strcpy(numero, num);

strcpy(agencia, ag);

saldo = 0;

}

Page 39: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Usando o Tipo Conta em Programação

OO

39

#include <iostream>

using namespace std;

int main() {

Conta *c;

c = new Conta(“1234-5”,”007-x”);

if (c == NULL){

printf(“Erro na criação do objeto!”)

} else {

c->creditar(300);

cout<<"Conta tem saldo = " << c->getSaldo() << endl;

c->debitar(200);

cout<<"Conta tem saldo = " << c->getSaldo() << endl;

}

return 0;

}

Comando para criar objeto de uma classe em tempo de execução (dinamicamente)

Para chamar método a partir de uma referência para um objeto

Para imprimir na tela

Page 40: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

40

Criação Dinâmica de Objetos

Em linguagens OO, escrevemos programas

utilizando objetos

Mas, primeiro, temos que criá-los...

Para criar um objeto em C++ dinamicamente

utilizamos o comando new

new Conta(...);

Palavra reservada

ordenando a criação

de um objeto

Construtor do objeto a ser

criado

Page 41: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Avaliação do operador new

Cria um objeto da classe NomeDaClasse e

armazena na sua memória

Inicializa os atributos deste objeto usando o

construtor desta classe

Devolve como resultado da avaliação uma referência

(endereço da memória) para o objeto criado

Para avaliar uma expressão do tipo new NomeDaClasse();

o computador...

41

Page 42: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Criando um objeto dinamicamente...

new Conta(“12-3”,11-2”);

4. Devolve o endereço

como resultado da avaliação 42

1. Cria o objeto

na memória

2. Inicializa o

objeto

12-3 11-2

id275

3. Associa um

endereço ao

objeto

12-3 11-2

Page 43: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Construtores e new

new NomeDaClasse(argumentos)

O número, ordem e tipos dos argumentos

determina o construtor 43

Podemos ter mais de um construtor para um

determinado objeto

A escolha do construtor para inicializar os atributos é

determinada pela lista de argumentos, entre

parênteses

Page 44: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Referências para objetos

A referência funciona como a identidade do objeto

O objeto

id305

A referência para o objeto

44

Todo acesso e manipulação é feito indiretamente,

através de uma referência (endereço) para o objeto

Quando declaramos uma variável do tipo ponteiro

para um objeto, ela não armazena o objeto e sim

uma referência para um objeto daquele tipo

Conta* conta1 = new Conta(“12-3”,”11-2”);

conta1 armazena este valor

Page 45: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Referências e identidade de um objeto

id305

id309

id312

Objetos diferentes, mas com o mesmo conteúdo (clones)

Referências diferentes objetos diferentes 45

12-3 11-2

12-3 11-2

11-5 12-4

Page 46: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

46

Considerações sobre Criação de

Objetos

Os valores dos atributos (estado) de um

objeto podem mudar durante a execução de

um programa, mas isso não afeta a

identidade do objeto

O ato de criar um objeto é chamado de

instanciar um objeto de uma determinada

classe

Page 47: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

47

Criação Estática de Objetos

C++ permite também a criação estática (em tempo

de compilação) de objetos

No ato da declaração de uma variável do tipo de uma

classe, objeto é criado

Na declaração deve-se passar argumentos do construtor

Conta c(“12-3”,”11-2”);

Tipo da variável c é Conta

Argumentos do construtor

Page 48: Conceitos Básicos de Orientação a Objetosif669ec/aulas/aula01C++.pdf · Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma

Usando Criação Estática de Objetos do

Tipo Conta

48

#include <iostream>

using namespace std;

int main() {

Conta c(“1234-5”,”007-x”);

c.creditar(300);

cout<<"Conta tem saldo = " << c.getSaldo() << endl;

c.debitar(200);

cout<<"Conta tem saldo = " << c.getSaldo() << endl;

return 0;

}

Declaração para instanciar objeto em tempo de compilação

Utiliza-se operador “.” para utilizar os métodos do objeto

criado estaticamente