• Nenhum resultado encontrado

5ª aula - Programação orientada a objetos

N/A
N/A
Protected

Academic year: 2021

Share "5ª aula - Programação orientada a objetos"

Copied!
47
0
0

Texto

(1)
(2)

Programação orientada a objetos

FUNDAMENTAÇÃO

DE PROGRAMAÇÃO

(3)

Linguagem de Programação

• Objetivo: Demonstrar os conceitos iniciais

de programação orientada a objeto

encapsulamento e polimorfismo a partir do

ambiente Visual Studio, utilizando a

(4)

Programação orientada a objetos

• Encapsulamento:

• A utilização de objetos possibilita que um objeto seja usado, mesmo que não se conheçam todos os seus atributos ou métodos. Desta forma, é

possível desenvolver bibliotecas(namespaces) de classes e objetos que possam ser utilizadas por terceiros. Imagine, por exemplo, uma namespace que trate recursos de impressão com código de barras em que não é necessário saber como as classes e objetos foram definidos e quais são os atributos. Apenas é necessário saber como eles funcionam, como são os seus métodos.

(5)

Programação orientada a objetos

• Encapsulamento:

– O conceito de encapsulamento decorre da

necessidade de esconder recursos que não são de interesse ao usuário. Proporciona estabelecer o conjunto de recursos que podem ser visíveis ou invisíveis, os quais são definidos pelos

qualificadores public, private, internal,

(6)

Programação orientada a objetos

• Encapsulamento:

– Ao desenvolver um objeto, pode-se especificar que é possível ter o acesso que se deseja. Por esta obra ser um estudo inicial da linguagem C#, estão sendo apresentados os qualificadores

public e private, ficando os demais a serem

vistos em outro trabalho de cunho mais

avançado. Assim sendo, considere o descrito a seguir:

(7)

Programação orientada a objetos

• Encapsulamento:

–>

Pode-se definir acesso total a todos os seus recursos (atributos e métodos), que são qualificados pelo tipo public.

–>

Pode-se definir recursos que somente sejam acessados por intermédio de um método existente na própria classe, que são aqueles com qualificador do tipo private.

(8)

Exemplo:

(9)

Copiar o projeto

CalculoMediaAprovação na pasta

compartilhada Programação

Orientada a objetos para o seu

respectivo computador e abrir no

Visual Studio 2013.

(10)

Programação orientada a objetos

• Encapsulamento:

– O programa seguinte apresenta o qualificador

private no estabelecimento de um atributo

(11)

Programação orientada a objetos

(12)

Programação orientada a objetos

• Encapsulamento:

• Observe no código do programa em que se

encontra a classe CadAluno a proposta de três atributos públicos, sendo NOME do tipo string e N1 e N2 do tipo float. Note o uso antes dos

atributos NOME, N1 e N2 do qualificador public. No entanto, observe o atributo MEDIA do tipo

float como sendo private. Neste caso, o atributo MEDIA é privado e somente pode ser usado

dentro da classe CadAluno, ou seja, o atributo MEDIA não possui visibilidade externa, pois está encapsulado.

(13)

Programação orientada a objetos

(14)

Programação orientada a objetos

• Encapsulamento:

• Os métodos CalcMedia() para o cálculo da média e CondAluno() para a verificação da condição de aprovação do aluno.

• No método CalcMedia() estão os parâmetros NT1 e NT2 que fornecem para o método os valores

das notas apresentadas. Internamente o método CalcMedia() utiliza o atributo MEDIA para calcular e dar retorno do valor da média calculada de

forma pública. O resultado da média é transferido pelo método CalcMedia() e não pelo atributo

(15)

Programação orientada a objetos

• Polimorfismo:

• O termo polimorfismo é urna variação em português do termo análogo em inglês

polymorphic, que é a contração das palavras

poly (muitos) e morphic (formas), ou seja, muitas formas. Na programação orientada a objetos,

polimorfismo é a capacidade que um método de um objeto possui de assumir formas diferentes para a sua execução.

(16)

Programação orientada a objetos

• Polimorfismo:

• Polimorfismo é a capacidade de escrever

métodos que se comportem corretamente para objetos de tipos diferentes (JANSA, 1995), ou seja, é a capacidade de estabelecer uma única interface para vários métodos membro.

(17)

Programação orientada a objetos

• Polimorfismo:

– O uso de polimorfismo pode ocorrer numa

linguagem orientada a objetos de quatro formas diferentes, mas nem toda a linguagem de

programação orientada a objetos opera todas as formas de polimorfismo. Assim sendo considere os modos de:

• >

polimorfismo universal paramétrica;

• >

polimorfismo universal de inclusão;

• >

polimorfismo ad hoc (lê-se adóqui, em latim para

isto ou temporariamente para esta finalidade) de

sobrecarga;

(18)

Programação orientada a objetos

• Polimorfismo universal paramétrico :

• O polimorfismo universal paramétrico é a

forma de polimorfismo considerada verdadeira. Ocorre quando estruturas preestabelecidas

(cenários ou contextos) de operação são utilizadas. Cada cenário possui uma ação

preestabelecida. Assim sendo, um objeto pode ser usado harmoniosamente em diferentes

cenários sem a necessidade de ser efetivamente modificado.

(19)

Programação orientada a objetos

• Polimorfismo universal paramétrico :

• O polimorfismo universal de inclusão ocorre quando um recurso de uma classe-filho

instancia um recurso sobre a classe-pai, sendo esta a forma mais simples de construção

polimórfica, pois a classe-pai herda algum recurso advindo da classe-filho.

(20)

Programação orientada a objetos

• Polimorfismo ad hoc de sobrecarga :

• O polimorfismo ad hoc de sobrecarga

acontece quando são usados vários métodos com o mesmo nome de identificação, mas possuindo número de parâmetros diferentes. Esta é a forma de polimorfismo mais simples, comum e será também apresentada a seguir.

(21)

Programação orientada a objetos

• Polimorfismo ad hoc de coerção :

• O polimorfismo ad hoc de coerção se apresenta quando se usam os recursos de

conversões de tipos de dados de uma variável em outro tipo de dado a fim de efetuar uma

operação em um método, evitando um erro de tipo, permitindo assim, por exemplo, tratar uma variável de tipo inteiro como se fosse de tipo

(22)

Programação orientada a objetos

• Polimorfismo:

• Melhor que descrever é demonstrar o uso das formas de polimorfismo. Atente para os

próximos três exemplos que demonstram as formas de polimorfismo: universal paramétrica, universal de inclusão e ad hoc de sobrecarga. • O polimorfismo ad hoc de coerção foi usado no

conceitos de métodos que comentou o uso de métodos para a conversão de tipos.

(23)

Programação orientada a objetos

• Polimorfismo universal paramétrica :

• O primeiro exemplo mostra o polimorfismo

universal paramétrica. Considere um programa que deve efetuar a entrada de valores num

arranjo em que não se conhece de antemão o número de elementos a serem inseridos. Além de mostrar uma ação polimórfica, também

(24)

Exemplo:

(25)

Copiar o projeto ListaNumero na

pasta compartilhada Programação

Orientada a objetos para o seu

respectivo computador e abrir no

Visual Studio 2013.

(26)

Programação orientada a objetos

• Polimorfismo universal paramétrica :

– O efeito de aplicação da operação de

polimorfismo universal paramétrica ocorre coma instrução:

List<Object> LISTA

=

new List<Object>();

– A classe List usa a classe Object para definir um objeto LISTA, o qual é instanciado a partir da classe List<Object> por meio da cláusula

new. O uso dos parênteses após a classe List<Object> diz ao compilador que não é

conhecido o número de elementos do arranjo, ou seja, é um arranjo do tipo dinâmico, cujo número de elementos a ser armazenado será controlado pelo programa.

(27)

Programação orientada a objetos

• Polimorfismo universal paramétrica :

– O efeito de polimorfismo universal paramétrica

ocorre com a classe Object definida para a classe

List. Perceba que a classe Object pode operar

com qualquer tipo de dado. No programa foi

escolhido operar com dados string para a variável N. Se for modificado o tipo da variável N para int,

float ou qualquer outro tipo, a lista de objetos

continua operando sem modificar a classe Object para outra. Neste ponto ocorre uma ação

polimórfica, pois o objeto LISTA pode assumir

qualquer tipo de dado, desde que seja previamente avisado, pois a Object é uma classe genérica da linguagem C#.

(28)

Programação orientada a objetos

• Polimorfismo universal paramétrica :

• Assim que o objeto LISTA está definido e

instanciado, é possível efetuar o gerenciamento da lista. O método Add() permite a entrada de dados na lista. A propriedade Count captura o número de elementos existentes na lista.

(29)

Programação orientada a objetos

(30)

Programação orientada a objetos

• Polimorfismo universal de inclusão:

• O exemplo a seguir vai demonstrar o

polimorfismo universal de inclusão. Considere um programa que execute um método da

classe-Pai e depois um método da classe-filho, ambos com o mesmo nome. Após a execução dos métodos de cada classe far-se-á a

sobreposição do método da classe-filho ao método da pai, de forma que a classe-pai perca acesso ao seu próprio método e

assuma para execução o método da classe-filho.

(31)

Exemplo:

(32)

Copiar o projeto ClassePaiFilho na

pasta compartilhada Programação

Orientada a objetos para o seu

respectivo computador e abrir no

Visual Studio 2013.

(33)
(34)

Programação orientada a objetos

• Polimorfismo universal de inclusão:

• Para conseguir o efeito de polimorfismo universal de inclusão de modo que uma classe-pai assuma

recursos da classe-filho, é necessário que o recurso a ser sobreposto esteja na classe-pai como virtual. Daí a instrução de declaração do método da classe-pai public virtual void Executa(). Raciocínio semelhante deve ser considerado no recurso com mesmo nome na classe-filho. O recurso da classe-filho deve ser

declarado com a capacidade de fazer sobreposição a um recurso virtual da classe-pai. Daí o fato de a

instrução de declaração do método da classe-filho ser public override void Executa(). O método

override(sobreposição) será sobreposto ao método de mesmo nome indicado como virtual.

(35)

Programação orientada a objetos

• Polimorfismo universal de inclusão:

– No programa observe duas classes. A classe ClassePai e a classe ClasseFilho, ambas

possuindo um método com mesmo nome, neste caso, método Executa().

– A classe-pai possui no seu método Executa() a capacidade de apresentar a mensagem Ação na classe-pai. Na classe-filho também há um

método chamado Executa() que apresenta a mensagem Ação na classe filho. Ambas as

classes possuem um método com mesmo nome, mas que resultam ações diferentes.

(36)

Programação orientada a objetos

• Polimorfismo universal de inclusão:

– Na sequência encontra-se o objeto PAI sendo atribuído pelo objeto FILHO por meio da

instrução PAI = FILHO;

– O método Executa() da classe-filho torna-se

sobreposto ao método Executa() da classe-pai. Quando isso ocorre, o objeto PAI assume para ele o método Executa() existente no objeto

FILHO, perdendo acesso ao seu próprio método. Esse efeito parece de herança, mas ocorre em sentido contrário.

(37)

Programação orientada a objetos

• Polimorfismo ad hoc de sobrecarga :

– O exemplo a seguir mostra o polimorfismo ad

hoc de sobrecarga. Considere um programa que

forneça como resposta a área de algumas figuras geométricas. Esse programa esta configurado por dois trecho de códigos distintos, as classes e a

(38)

Exemplo:

(39)

Copiar o projeto CalculoDeArea na

pasta compartilhada Programação

Orientada a objetos para o seu

respectivo computador e abrir no

Visual Studio 2013.

(40)

Programação orientada a objetos

Classe que faz o calculo das

Áreas:

De um cilindro, de um retângulo e um cubo.

Classe Principal:

Onde e executado a rotina do programa.

(41)

Programação orientada a objetos

• Polimorfismo ad hoc de sobrecarga :

– Os métodos Area() da classe CalcArea

apresentam apenas o qualificador public. Para os casos em que os métodos serão sobrepostos via polimorfismo ad hoc de sobrecarga, os métodos não podem ser estáticos. Não se usa a cláusula static como ocorreu em outros exemplos.

(42)

Programação orientada a objetos

• Polimorfismo ad hoc de sobrecarga :

– No código da classe CalcArea observe os três métodos diferentes com o mesmo nome: Area(). Cada método trata de uma forma diferente (mais de uma forma, é polifórmico) de parâmetro e

assim está capacitado a realizar uma tarefa diferente da outra. Quando da execução do programa, a seleção do método a ser usado

ocorre automaticamente e essa decisão depende do número de parâmetros em uso no momento da chamada do método.

(43)

Exercícios

(44)

Exercícios

1º - Programar no C# utilizando o conceito de Polimorfismo com sobrecarga de métodos um programa que realize a soma de 2, 3, 4 e 5

números. Exemplo:

2+3; 5+6+7; 8+5+4+1; 10+4+11+2+7;

A sobrecarga de métodos é um conceito onde

usamos o mesmo nome do método muitas vezes na mesma classe, mas cada método com

parâmetros diferentes. Com base nos parâmetros passados a execução é decidida em tempo de

compilação.

(45)

Exercícios

2º - Programar no C# utilizando o conceito de Polimorfismo universal de inclusão para o

seguinte problema:

• Imagine uma classe veículo que define os

comportamentos e atributos de qualquer veículo e não apenas de carros.

(46)

Exercícios

• Uma característica básica de qualquer veículo é o movimento logo nossa classe veículo pode

expressar isso através de um método Mover(). • Outra característica básica de qualquer veículo

seria poder parar afinal nenhum veículo fica

eternamente em movimento e isso seria expresso na classe veículo por um método Para().

• Então podemos criar uma classe Veiculo contendo esses métodos e usar o mecanismo da herança

para que outras classes herdem os atributos e comportamentos(métodos) comuns.

(47)

Exercícios

Programação orientada a objetos

Definir os métodos da super classe. Definir os atributos

Referências

Documentos relacionados

• As regras para nomes de classe são bem fáceis: devem começar sempre por um letra e, depois dela, podem ter qual- quer combinação de letras ou números (porém você não

• É possível comprar acessando o método comprar, passando como parâmetro dois objetos, um do tipo Pessoa e outro do tipo Produto.. M.; Programação Orientada

– É o processo de esconder todos os detalhes de um objeto que não contribuem para suas características

– Pode ser acessado por qualquer outra classe em qualquer outro pacote.

• Projeção de classes genéricas que podem ser especializadas em classes mais particulares3. • Classes especializadas reutilizam o código das

– Método executado depende da classe do objeto – Mesma chamada executa métodos diferentes.. • obj.metodo() vai executar método que foi definido para classe do objeto

– Classe deve implementar TODOS os métodos definidos na interface.. Implementação

• Método parseInt pode disparar exceção NumberFormatException (não verificada). – Se a exceção for dispara os comandos do bloco try não serão