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.