Buscar

Classes e Objetos com revisão de ATP

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 80 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PUC Minas – Curso de Sistemas de Informação
Programação Orientada por Objetos
Profs. João Caram e Paulo Amaral
Classes e objetos com revisão de ATP
Programação Orientada
por Objetos
Baseado no material dos seguintes professores: 
- João Caram 
- Hugo Bastos 
- Anna Tostes 
2
Endereços de Memória
• Instruções e dados são 
armazenados na memória 
principal (RAM) durante o 
processamento.
• Cada posição de memória do 
computador possui um endereço 
numérico associado.
célula = 8 bits
e
n
d
e
r
e
ç
o
s
0
2 -1
16
2
1
instrução ou dado
Endereços e variáveis
• Para facilitar a tarefa de desenvolvimento de programas, as
linguagens de programação permitem que posições da
memória principal sejam referenciados por nomes
simbólicos ao invés de dos endereços numéricos
correspondentes.
• Estes nomes simbólicos são denominados de variáveis
porque seus conteúdos podem variar durante a execução
do programa.
Variáveis
int numeroDaConta;
numeroDaConta = 4823
numeroDaConta
Tipos de dados
• Cada variável está associado a um tipo de dados, o qual
define como o dado é codificado, valores válidos e a
quantidade de posições de memória necessárias para
representar os dados que a variável armazena.
• As linguagens de programação incluem alguns tipos de
dados básicos, conhecidos como tipos primitivos ou
fundamentais por serem suportados diretamente pelo
compilador, sendo utilizados para a definição de variáveis,
parâmetros, declarações, etc.
Tipos de dados
• Os tipos de dados primitivos ou simples são grupos de
valores indivisíveis como int, double, bool, char, etc.
• Na linguagem de programação C#, as variáveis devem ser
declaradas antes de serem utilizadas. A declaração de uma
variável envolve definir um nome único (identificador) dentro
de um escopo.
• Em C# todo o tipo de dados possui um correspondente na
CLR (Common Language Runtime), por exemplo:
int em C# refere-se a System.Int32 na plataforma .NET.
Tipos de dados em C#
Os tipos de dados no C# são divididos em 3 categorias:
• Tipos valor(value types)
• Tipos referência (reference types)
• Tipos ponteiro (pointer types)
Tipos valor armazenam dados em memória.
Tipos referência armazenam uma referência, ou o endereço, 
para o valor atual. 
Tipos ponteiro apenas apontam para um endereço de 
memória.
Tipos primitivos em C#
Tipo C# Descrição Faixa de valores
bool Booleano true ou false
byte Inteiro de 8-bit com sinal -127 a 128
char Caracter Unicode 16-bit U+0000 a U+ffff
decimal Inteiro de 96-bit com sinal 1,0 × 10E-28 a 7,9 × 1028(28-29 dígitos)
Double Flutuante IEEE 64-bit ±5,0 × 10E-324 a ±1,7 × 10E308 (15-16 dígitos significativos)
float Flutuante IEEE 32-bit ±1,5 × 10E-45 a ±3,4 × 10E38 (7 dígitos significativos) 
int Inteiro de 32-bit com sinal -2.147.483.648 a 2.147.483.647
long Inteiro de 64-bit com sinal –9,223,372,036,854,775,808 a 9,223,372,036,854,775,807
Sbyte Inteiro de 8-bit sem sinal 0 a 255
Short Inteiro de 16-bit com sinal -32,768 a 32,767
String String de caracteres 
Uint Inteiro de 32-bit sem sinal 0 a 4,294,967,295
Ulong Inteiro de 64-bit sem sinal 0 a 18,446,744,073,709,551,615
Ushort 16-bit sem sinal 0 a 65,535
Tipos primitivos em Java
Tipo Tamanho Precisão
byte 8 bits -128 a 127
short 16 bits -32.768 a 32.768
int 32 bits -2.147.483.648 a 2.147.483.647
long 64 bits -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807
float 32 bits IEEE 754 (-1,4 10 x E-45 a 3,4 x10E+38)
double 64 bits IEEE 754 (-4,9 10 x E-324 a 1,797x10+308)
char 16 bits UNICODE
boolean true, false
Arrays
• Array é uma coleção de elementos armazenados em sequência, 
acessíveis através de um índice numérico. Pode-se criar arrays com 
uma ou mais dimensões.
• Em C# e Java, o primeiro elemento de um array é o de índice zero (0).
• Exemplos:
int [ ] numeros = new int [100]; // C# e Java
int [ ] numeros = {1, 2, 3, 4, 5}; // C# e Java
int [,] numeros = new int [3, 2] {{1, 2}, {3, 4}, {5, 6} }; // C#
int [ ][ ] numeros = new int [ ][ ] {{1, 2}, {3, 4}, {5, 6} }; // Java
string [,] nomes = new string [2, 2] {{“Mara”, “Lotar”}, {“Mary”, “José”} }; // C# 
Tipo Abstrato de Dados
TAD: Tipos Abstratos de Dados
• “Coleção bem definida de dados a serem armazenados e um grupo de 
operadores que podem ser aplicados para manipulação desses dados.” 
(FERRARI, R.).
• TAD pode ser visto como um modelo matemático, acompanhado de 
operações definidas sobre o modelo.
• É um conjunto de funções operando sobre uma estrutura de dados, 
sendo que a organização física da estrutura é encapsulada.
• É um conjunto de dados munido de operações sobre estes dados.
• Não é visível para o programador que usa o tipo abstrato.
Exemplo: TAD Conta Bancária
Operadores, funções ou métodos:
• CriarConta
• Depositar
• Sacar
• MostrarSaldo
Tipos de dados usados como parâmetros das funções:
• numConta: número da Conta Bancária
• nomeTitular: nome do titular da conta
• SaldoConta
TAD: melhorar a qualidade do 
código
• Ocultamento de informações: é importante que o cliente
conheça o menor número possível de informações a
respeito do TAD.
• Interface simples e bem definida: o TAD deve ser definido
de forma que seja fácil utilizar as suas funcionalidades
(alterar o algoritmo sem alterar a assinatura).
Tipo Abstrato de Dados
• TAD deve implementar exatamente um conceito bem 
delimitado e definido.
• Ser abstrato significa: 
• Ser manipulável através de um conjunto limitado de 
funções
• Detalhes internos (organização de dados) não são 
visíveis para os usuários de tais tipos 
(encapsulamento).
structs
Um tipo struct (estrutura): é um tipo de valor normalmente usado para
encapsular pequenos grupos de variáveis relacionadas, como as
coordenadas de um retângulo ou as características de um item em um
inventário.
Structs compartilham grande parte da sintaxe de classes, embora sejam
mais limitados do que classes:
O exemplo a seguir mostra uma declaração simples de estrutura:
public struct Book{
public decimal price;
public string title;
public string author;
}
structs x classes
structs são tipos de valor e classes são tipos de referência.
Diferentemente das classes, structs pode ser instanciada sem usar 
o operador new.
Uma estrutura não pode herdar uma outra estrutura ou classe, e também 
não pode ser base de uma classe.
O tipo struct pode adequado para a representação de objetos simples tais 
como Point, Rectangle e Color porque pode ser mais eficiente em alguns 
cenários. Por exemplo, ao declarar um array de 1000 objetos Point, aloca-
se memória adicional para referenciar cada objeto; neste caso, uma struct
seria menos dispendiosa.
Exemplo TAD: Lista (AED) 
• Considere uma aplicação que utiliza uma lista de inteiros:
• Definição da TAD: Lista
• Operações da TAD Lista:
• Criar a lista vazia;
• Obter o primeiro elemento da lista;
• Inserir um elemento na lista.
• A lista pode ser implementada utilizando uma estrutura de dados 
como um vetor.
• Cada operação (método) do TAD Lista pode ser implementada 
através de procedimentos ou funções.
• Se existir a necessidade de alteração do TAD, esta é realizada na 
parte encapsulada, sem afetar outras partes do código. 
Exemplo TAD: Pilha
• Seja um TAD para representar uma pilha de dados, 
denominado Pilha.
• Operações possíveis sobre este tipo
• vazia, que retorna verdadeiro caso a pilha 
esteja vazia
• empilha(elemento), que coloca o elemento 
especificado no topo da pilha
• desempilha, que remove o elemento do topo 
da pilha
Exemplo: Pilha
• Como é um TAD, a representação real e implementação 
do tipo Pilha estão ocultas esomente as operações estão 
visíveis para serem acessadas por usuários do tipo
• Vantagem:
• Momento 1: Inicialmente utiliza um array
• Momento 2: Passa a usar uma lista encadeada
• A modificação não causa qualquer impacto nos códigos que 
utilizam o tipo Pilha, pois a representação interna está 
encapsulada
PUC Minas – Curso de Sistemas de Informação
Programação Orientada por Objetos
Profs. João Caram e Paulo Amaral
POO
 Programação orientada a objetos (POO):
 Paradigma de programação que busca:
 Agrupar dados e procedimentos.
 Aproximar o modelo do programa ao mundo real: 
interação entre objetos
 Fortemente baseada nos conceitos de Classes e 
Objetos.
PUC Minas – Curso de Sistemas de Informação
Programação Orientada por Objetos
Profs. João Caram e Paulo Amaral
Principios POO
 Modularidade
 Reuso
 Encapsulamento
Abstração
• O princípio fundamental da Orientação a Objetos que
permite a construção de sistemas modulares é o
mecanismo de abstração.
• Uma abstração é um mecanismo que permite uma
situação complexa do mundo real ser representada por
um modelo mais simples.
• “Visualização ou representação de uma entidade que
inclui somente os atributos de importância em um
contexto particular” (Sebesta, 2000).
• Processo de representar um grupo de entidades através
de seus atributos comuns.
Encapsulamento
• Agrupamento de subprogramas e dados compilados 
separadamente e independentemente.
• Ex: bibliotecas DLL's do Windows
• Podem ser disponibilizados como “pedaços de softwares” 
para a produção de programas maiores.
Encapsulamento
• Tarefa de tornar um objeto o mais auto-suficiente possível.
• Exemplos:
• Para se dirigir um carro não é necessário entender o funcionamento
do motor.
• Para usar o computador, não é necessário saber como acontece a
comunicação entre o sistema operacional e o hardware da máquina
para diversas funções.
Abstração x Encapsulamento
• Abstração: define as entidades que representam um 
objeto.
• Encapsulamento: esconde detalhes do objeto, 
ocultando detalhes de seu funcionamento.
Classe: TAD em POO
• Na Programação Orientada por Objetos uma Classe
implementa um TAD.
• Uma classe contém os elementos que representam o tipo.
• Uma classe agrupa todas as operações realizadas sobre os
elementos.
• Objetos são “instanciados” ou criados de uma classe.
• Os Objetos são entidades (ou itens) unicamente
identificados e representam uma instância concreta e
dinâmica de uma classe.
Classes
 Classe: descrição de um TAD
 Constituída por atributos (características) e 
métodos (comportamento)
 Atributos de classe são semelhantes a campos de estruturas; 
 Métodos de classe são funções que operam sobre os atributos.
Classes
 Exemplo: classe Data
 Atributos possíveis: 
 dia, mês, ano
 Métodos possíveis:
 Adicionar dias a uma data
 Diferença de dias entre duas datas
 Verificar validade da data
 Semana da data no ano (1 a 52)
 Dia da data no ano (1 a 366)
...
Classes
 Uma “variável” declarada cujo “tipo” é uma classe, esta 
variável será composta, assim como nas estruturas 
(structs).
 Haverá uma cópia de cada um dos atributos para cada 
“variável” declarada daquela classe.
Objetos
 Um objeto é uma instância de uma classe
 Representação na memória
Classe x Objeto
 Uma classe é um modelo para algo que deve 
ser criado.
 Uma “Receita para Bolo de Chocolate” será usada 
como um modelo para o bolo que será criado. 
 De forma análoga:
A receita é uma classe. O bolo é um objeto.
Classe x Objeto
 Uma classe não é utilizada diretamente.
 A classe é utilizada somente para criar objetos 
baseados nela
 Objetos serão utilizados no programa. 
Classe x Objeto
 Exemplo:
 Classe e sua instância (objeto da classe), C#:
//Classe Produto
public class Produto 
{ 
...
}
//instância da Classe Produto
Produto meuProduto = new Produto();
Classe x Objeto
Classes e Encapsulamento
 Uma classe é geralmente dividida em duas 
partes: 
1. Privativa: contém elementos que serão de uso exclusivo da 
classe.
2. Pública: contém os elementos da classe visíveis (exportados) 
para o usuário/programador pela classe.
 Regra geral:
 Atributos privados
 Métodos públicos
Declaração de 
Classes e Objetos
Declarar uma classe:
Declarar um objeto:
class Pessoa
{
string nome;
void Andar() { }
}
Pessoa auxPessoa = new Pessoa();
PUC Minas – Curso de Sistemas de Informação
Programação Orientada por Objetos
Profs. João Caram e Paulo Amaral
Atributos e Métodos
Atributo Cor Lataria
Atributo Aro
Atributo Vidro
Atributo 
Cor Parachoque
Atributo Placa
Atributos
Métodos
Ações do carro (Métodos)
Ligar (Ignição) 
Acelerar
Freiar (Brecar)
Trocar de Marcha
C
la
sse
+Trocar marcha()
+Ligar()
+Acelerar()
+Brecar()
-Placa
-Cor Lataria
-Cor Parachoque
-Aro
-Tipo Vidro
Fusca
Carro
Atributos
Atributos de Objeto (ou atributos de dados)
 Atributos individuais: armazenados no objeto.
 Exemplo: A hora de um despertador.
Atributos de Classe
 Atributo compartilhado entre todos os objetos criados → 
armazenado na classe.
 Exemplo: Um contador de despertadores existentes.
Métodos
 Métodos:
 As ações ou comportamento do objeto 
 Conjunto de serviços fornecidos pelo objeto.
 Manipulam e alteram os atributos do objeto.
 Em POO:
 Interações são representadas por mensagens
 Mensagens são enviadas a objetos. Uma mensagem 
pode ser gerada pelo usuário, por exemplo, ao clicar o 
mouse. 
Métodos (C#)
 Método:representa uma ação
class Cliente {
private int produtosAdquiridos;
public bool EClienteEspecial() {
if (produtosAdquiridos < 250) 
return false;
return true;
}
public void ComprarEspecial() { /* AÇÃO */ }
}
...
Cliente proximoCliente = new Cliente();
bool clienteEspecial = proximoCliente.EClienteEspecial();
if (clienteEspecial)
proximoCliente.ComprarEspecial();
Revisão de ATP
• Procedimentos e funções
• Estruturas que agrupam um conjunto de comandos
• “Subprogramas”
• Funções retornam um valor ao final da execução. Procedimentos, 
não.
• Métodos
• Implementam uma ação executada por um objeto de uma classe.
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercícios
• Escreva uma função que receba 5 números inteiros do 
usuario e, ao final, retorne o maior deles.
• Escreva uma função que receba 5 números inteiros do 
usuario e, ao final, retorne a média de seus valores.
• Escreva uma função que receba 5 números inteiros do 
usuario e, ao final, avise se há números repetidos.
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Parâmetros
• Tornam o uso de funções e procedimentos mais genéricos
• Um código  vários dados
• Um parâmetro “avisa” a um procedimento ou função sobre 
quais dados ele deve operar
• Flexibilidade e reaproveitamento de código e dados
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercícios
• Escreva uma função que receba 5 números inteiros do 
usuário e, ao final, retorne o maior deles.
• Escreva uma função que receba 5 números inteiros do 
usuário e, ao final, retorne a média de seus valores.
• Escreva uma função que receba 5 números inteiros do 
usuário e, ao final, avise se há números repetidos.
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Parâmetros por valor (cópia)
• Quando os parâmetros são passadospor valor, o valor da 
variável é copiado para uma variável local. A variável local 
é descartada após o fim do subprograma.
int somar(int a, int b){
a = a+b;
return a;
}
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a
b
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
8
7
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
a = a+b;
return a;
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
15
7
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
a = a+b;
return a;
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c: 
15
15
7
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(a,b);
a = a+b;
return a;
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c: 
15
Métodos (C#)
 Passagem de parâmetros por valor
class Cliente {
private int produtosAdquiridos;
public void DefineProdutosAdquiridos(int quantidade) 
{
produtosAdquiridos = quantidade;
}
}
...
Cliente novoCliente = new Cliente();
int produtos = 255;
novoCliente.DefineProdutosAdquiridos(produtos);
//OR
novoCliente.DefineProdutosAdquiridos(200);
Parâmetros por referência
• O programa cria um apontador para o local da variável
original
• Este apontador funciona como um atalho (ou uma “placa”) 
para o dado que deve ser utilizado pelo código
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
int somar(ref int a, ref int b){
a = a+b;
return a;
}
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a, ref b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a
b
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
8
b: 
7
c
ref
a
ref
b
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
a = a+b;
return a;
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
15
b: 
7
c
ref
a
ref
b
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
a = a+b;
return a;
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
15
b: 
7
c: 
15
ref
a
ref
b
int a, b;
a = Int.Parse(Console.Readline());
b = Int.Parse(Console.Readline());
int c = somar(ref a,ref b);
a = a+b;
return a;
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
a: 
15
b: 
7
c: 
15
Métodos
 Passagem de parâmetros por referência (ref)
public void RetornaEndereco(ref int numero, ref string rua)
{
numero = this.numero;
rua = this.rua;
}
int numeroLocal = 0;
string ruaLocal = “”;
novoCliente.RetornaEndereco(ref numeroLocal, ref ruaLocal);
// numeroLocal e ruaLocal recebem novos valores
Parâmetros
• Em resumo:
• Passagem de parâmetros por referência pode causar a alteração
do valor da variável ou estrutura original
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Métodos (C#)
 Passagem de parâmetros por referência (out)
public void RetornaEndereco(out int numero, out string rua)
{
numero = this.numero;
rua = this.rua;
}
int numeroLocal;
string ruaLocal;
novoCliente.RetornaEndereco(out numeroLocal, out ruaLocal);
// numeroLocal e ruaLocal são inicializados
Parâmetros
• ATENÇÃO
Em C#, algumas estruturas são sempre passadas por 
referencia
Ex:
vetores
matrizes
objetos
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercícios
• Escreva um método “quantosDias” que receba como 
parâmetro uma data composta por dia, mês e ano e retorne 
o número de dias decorridos no ano até a data fornecida.
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercícios
• Escreva um algoritmo que leia os votos de 15 eleitores para 
presidente. Os candidatos são:
19 – Machado de Assis
21 – Guimarães Rosa
33 – Cecília Meireles
Ao final da votação, o algoritmo deve mostrar o resultado 
final em número de votos e em porcentagem. 
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercícios
• Escreva um método que esteja preparado para receber 10 
números inteiros do usuário. Esses números devem ser 
inseridos em um vetor por meio de um métodoparametrizado. Ao final das leituras e inserções, o vetor 
deve ser exibido na ordem crescente de valores. 
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercícios
• Escreva um método que esteja preparado para receber 10 
números inteiros do usuário. Esses números devem ser 
inseridos em um vetor por meio de um método 
parametrizado. Ao final das leituras e inserções, outro 
método deve retornar o menor e o maior valor presentes no 
vetor. 
Curso de Sistemas de Informação – PUC Minas
Programação Orientada por Objetos
Prof. João Caram
Exercício
Qual é a saída do programa?
class RefExample
{
static void Method(ref int i)
{
i = i + 44;
}
static void Main()
{
int val = 1;
Method(ref val);
Console.WriteLine(val);
}
}
Exercício
Qual é a saída do programa?
class OutExample
{
static void Method(out int i)
{
i = 44;
}
static void Main()
{
int value;
Method(out value);
}
}
Exercícios
TELEVISÃO
Implemente uma classe Televisão que tenha metodos
para ligar e desligar, aumentar ou diminuir o volume (com
minimo de 0 e maximo de 100) e subir ou baixar o canal
(entre 1 e 83)
Implemente um programa que crie um objeto da classe
Televisão e simule seu uso.
Exercícios
DATA
Implemente a classe Data utilizada como exemplo.
Dica: use um nome diferente de Data (dados, em inglês, é palavra reservada em algumas 
linguagens de programação)
Implemente um programa que crie objetos da 
classe Data e simule seu uso.

Outros materiais