• Nenhum resultado encontrado

Apostila Poo

N/A
N/A
Protected

Academic year: 2021

Share "Apostila Poo"

Copied!
24
0
0

Texto

(1)

!

Faculdade(Metropolitana(de(Manaus(

(

(

(

(

(

(

(

Apostila(POO(–(Programação(Orientada(a(Objetos(

(

(

Professor:(Msc.(Manfrine(Tapiramutá.(

(

(

(

(

(

(

(

(

Manaus(@(AM(

(

(2)

Sumário(

1

!

Publico!Alvo!...!3

!

2

!

Descrição!...!4

!

2.1

!

Criando!uma!classe!...!6

!

3

!

IDE!Eclipse!...!6

!

4

!

introdução!a!orientação!a!objetos!...!12

!

4.1

!

objetos!...!13

!

4.2

!

Classe!...!14

!

4.3

!

herança!...!16

!

4.4

!

Encapusulamento!...!18

!

4.4.1

!

Definição!de!Modificadores!de!Acesso!...!18

!

4.4.2

!

Os!métodos!Gets!e!Sets!...!19

!

4.5

!

POLIMORFISMO!...!21

!

4.5.1

!

Sobrecarga!...!21

!

4.5.2

!

Sobresecrita!...!22

!

4.6

!

Classe!Abstrata!...!22

!

4.7

!

Interfaces!...!23

!

!

(

(

(

(

(

(

(

(3)

!

1( PUBLICO(ALVO(

Essa!apostila!é!destinada!a!estudantes!que!tem!conhecimentos!em!lógica!de!programação.! A!programação!orientada!a!objetos!é!um!modo!de!programar!que!vem!sendo!utilizado!por! quase!todas!as!linguagens!de!programação!que!dominam!o!mercado!de!desenvolvimento.! Desde!já!agradeço!a!todos!por!utilizar!o!trabalho!para!fins!alterativos!de!conhecimento.! !

(

(4)

2( DESCRIÇÃO(

A!programação!Orientada!a!Objetos!T!POO!é!uma!forma!de!programação!que!tem!como! principal!função!aproximar!o!mundo!real!do!mundo!virtual.!

A! Orientação! a! Objeto! ou! apenas! OO,! é! uma! tecnologia! de! desenvolvimento! de! software!em!que!as!linguagem!de!programação!estão!se!adaptando!e!se!adequando!a! ela,! pelo! fato! de! seus! conceitos! serem! vistos! com! bons! olhos! por! críticos! em! desenvolvimento!de!sistemas.!

A!grosso!modo!falando,!a!POO!tenta!dissolver!os!problemas!mais!complexos!utilizando! formas! de! programação! que! ajude! nesse! processo! de! desenvolvimento,! para! isso! a! POO!conta!com!vários!conceitos:!

!! Classe!representa! um! conjunto! de! objetos! com! características! afins.! Uma! classe! define!o!comportamento!dos!objetos!através!de!seus!métodos,!e!quais!estados!ele!é! capaz!de!manter!através!de!seus!atributos.!Exemplo!de!classe:!Os!seres!humanos.! !! Subclasse! é! uma! nova! classe! que!herda!características! de! sua(s)! classe(s)!

ancestral(is).!

!! Objeto(/(instância!de!uma!classe.!Um!objeto!é!capaz!de!armazenar!os!valores!que! serão!inseridos!através!de!seus!atributos!e!capaz!de!exercer!reação!a!mensagens! enviadas! a! ele,! assim! como! se! relacionar! e! enviar! mensagens! a! outros! objetos.! Exemplo!de!objetos!da!classe!Humanos:!João,!José,!Maria!

!! Atributo!são!características!de!um!objeto.!Basicamente!a!estrutura!de!dados!que!vai! representar! a! classe.! Exemplos:! Funcionário:! nome,! endereço,! telefone,! CPF,...`! Carro:!nome,!marca,!ano,!cor,!…`!Livro:!autor,!editora,!ano.!Por!sua!vez,!os!atributos! possuem!valores.!Por!exemplo,!o!atributo!cor!pode!conter!o!valor!azul.!O!conjunto!de! valores!dos!atributos!de!um!determinado!objeto!é!chamado!de!estado.!

!! Método!definem! as! habilidades! dos! objetos.! Bidu! é! uma! instância! da! classe! Cachorro,! portanto! tem! habilidade! para! latir,! implementada! através! do! método! deUmLatido.!Um!método!em!uma!classe!é!apenas!uma!definição.!A!ação!só!ocorre! quando!o!método!é!invocado!através!do!objeto,!no!caso!Bidu.!Dentro!do!programa,!a! utilização! de! um! método! deve! afetar! apenas! um! objeto! em! particular`! Todos! os! cachorros! podem! latir,! mas! você! quer! que! apenas! Bidu! dê! o! latido.! Normalmente,! uma!classe!possui!diversos!métodos,!que!no!caso!da!classe!Cachorro!poderiam!ser! sente,!coma!e!morda.!

!! Mensagem!é!uma!chamada!a!um!objeto!para!invocar!um!de!seus!métodos,!ativando! um! comportamento! descrito! por! sua! classe.! Também! pode! ser! direcionada! diretamente!a!uma!classe!(através!de!uma!invocação!a!um!método!estático).!

!! Herança!(ou!generalização)!é!o!mecanismo!pelo!qual!uma!classe!(subTclasse)!pode! estender!outra!classe!(superTclasse),!aproveitando!seus!comportamentos!(métodos)! e!variáveis!possíveis!(atributos).!Um!exemplo!de!herança:!Mamífero!é!superTclasse! de!Humano.!Ou!seja,!um!Humano!é!um!mamífero.!Há!herança!múltipla!quando!uma!

(5)

! subTclasse!possui!mais!de!uma!superTclasse.!Essa!relação!é!normalmente!chamada! de!relação!"é!um".! !! Associação!é!o!mecanismo!pelo!qual!um!objeto!utiliza!os!recursos!de!outro.!Pode! tratarTse!de!uma!associação!simples!"usa!um"!ou!de!um!acoplamento!"parte!de".!Por! exemplo:!Um!humano!usa!um!telefone.!A!tecla!"1"!é!parte!de!um!telefone!

!! Encapsulamento!consiste! na! separação! de! aspectos! internos! e! externos! de! um! objeto.! Este! mecanismo! é! utilizado! amplamente! para! impedir! o! acesso! direto! ao! estado! de! um! objeto! (seus! atributos),! disponibilizando! externamente! apenas! os! métodos! que! alteram! estes! estados.! Exemplo:! você! não! precisa! conhecer! os! detalhes!dos!circuitos!de!um!telefone!para!utilizáTlo.!A!carcaça!do!telefone!encapsula! esses! detalhes,! provendo! a! você! uma! interface! mais! amigável! (os! botões,! o! monofone!e!os!sinais!de!tom).!

!! Abstração!é! a! habilidade! de! concentrar! nos! aspectos! essenciais! de! um! contexto! qualquer,! ignorando! características! menos! importantes! ou! acidentais.! Em! modelagem! orientada! a! objetos,! uma! classe! é! uma! abstração! de! entidades! existentes!no!domínio!do!sistema!de!software!

!! Polimorfismo!consiste! em! quatro! propriedades! que! a! linguagem! pode! ter! (atente! para!o!fato!de!que!nem!toda!linguagem!orientada!a!objeto!tem!implementado!todos! os!tipos!de!polimorfismo):!

!! Universal:!

!! Inclusão:! um! ponteiro! para! classe! mãe! pode! apontar! para! uma! instância! de! uma! classe! filha! (exemplo! em! Java:! "List! lista! =! new! LinkedList()`"! (tipo! de! polimorfismo!mais!básico!que!existe)!

!! Paramétrico:! se! restringe! ao! uso! de!templates!(C++,! por! exemplo)! e!generics!(Java/C♯)!

!! AdTHoc:!

!! Sobrecarga:! duas! funções/métodos! com! o! mesmo! nome! mas! assinaturas! diferentes!

!! Coerção:! a! linguagem! que! faz! as! conversões! implicitamente! (como! por! exemplo!atribuir!um!int!a!um!float!em!C++,!isto!é!aceito!mesmo!sendo!tipos! diferentes!pois!a!conversão!é!feita!implicitamente)!

!! Interface!é! um! contrato! entre! a! classe! e! o! mundo! externo.! Quando! uma! classe! implementa! uma! interface,! ela! está! comprometida! a! fornecer! o! comportamento! publicado!pela!interface!

!! Pacotes! (ou! Namespaces)! são! referências! para! organização! lógica! de! classes! e! interfaces!

(6)

2.1! CRIANDO!UMA!CLASSE!

Uma! tem! como! principal! função! compartilhar! características! para! os! objetos! que! irão! ser! criado!a!partir!dela.!Traduzindo!as!Classes!são!uma!“Fabrica!de!Objetos”.!

Abaixo!um!código!escrito!na!linguagem!JAVA.!

(

package aula;

public class Primeiro {

public static void main(String[] args) {

System.out.println("Hello World"); }//fim do método main

}//fim da classe

3( IDE(ECLIPSE(

Pacote! onde! está! localizado! o! código!

Método! main(),! que! executa! todos! os! código!JAVA.!

Comando! de! impressão! de! informação.!

(7)
(8)
(9)
(10)
(11)

!

(

(12)

4( INTRODUÇÃO(A(ORIENTAÇÃO(A(OBJETOS(

(13)

!

4.1! OBJETOS!

Cada!objeto!simula!um!conceito!ou!abstração,!e!pode!responder!a!mensagens!que!

recebe!e!que!fazem!parte!do!seu!protocolo!de!comunicação!com!os!demais!objetos!

do!sistema.!Ao!reconhecer!uma!mensagem,!o!objeto!ativa!uma!das!rotinas!de!seu!

repertório! particular! (um! método),! que! descreve! o! comportamento! do! objeto!

associado!a!essa!mensagem.!Um!objeto!é!uma!instância!de!sua!classe.!É!a!classe!

que!contém!a!descrição!da!representação!interna!e!dos!métodos!comuns!a!todas!as!

suas!instâncias.!Cada!instância!da!classe,!por!sua!vez,!possui!sua!própria!memória!

privativa! (seu! estado! interno)! onde! ficam! armazenados! os! valores! de! seus!

componentes,!que!representam!suas!características!individuais.!Um!objeto!requisita!

a!ação!de!algum!outro!objeto!enviando!uma!mensagem!para!ele.!

(14)

4.2! CLASSE!

!

Classes:(

Uma! classe! representa! um! gabarito! para! muitos! objetos! e! descreve! como! estes!

objetos! estão! estruturados! internamente.! Objetos! de! mesma! classe! possuem! a!

mesma!definição!tanto!para!métodos!quanto!para!atributos.!Classes!são!compostas!

por!atributos!(dados)!e!operações!(métodos)!que!atuarão!sobre!esses!atributos.!Os!

atributos! e! as! operações! são! os! membros! da! classe.! Por! exemplo,! uma! classe!

Círculo! teria! como! atributos! o! raio! e! o! centro,! e! como! métodos! uma! função! para!

calcular!a!área!e!outra!para!calcular!o!perímetro.!

Abaixo!uma!classe:!

package aulaAtributo;

public class Pessoa { String nome; String rg; String telefone; int idade; float salario; void comprar(){

System.out.println("A pessoa acabou de comprar"); }

void calc(){

if(idade < 18){

System.out.println("não pode comprar"); }else{

System.out.println("Pode comprar"); comprar(); } } }

Classe(de(Teste(

!

public class Teste2 {

public static void main(String[] args) { Pessoa p1 = new Pessoa();

Método!!

Atributos.!

Criando! Objetos,! objetos! são! instâncias! das! classes,! então! se! eu! quero! utilizar! a! características! definidas! nas! classes,! eu! preciso! instanciar! objetos! do! mesmo! tipo! da! classe.!

Classe! Scanner! tem! a! características!de! capturas! os!

(15)

!

Scanner e = new Scanner(System.in);

System.out.println("Digite o nome da pessoa"); p1.nome = e.next();

System.out.println("Digite o RG da pessoa"); p1.rg = e.next();

System.out.println("Digite a idade"); p1.idade = e.nextInt();

System.out.println("Digite um salario"); p1.salario = e.nextFloat();

System.out.println("O nome digitado foi: "+p1.nome); System.out.println("O rg digitado foi: "+p1.rg);

System.out.println("O salario digitado foi: R$ "+p1.salario); p1.calc(); } }

!

!

!

!

O! método! next(),! é! da! classe! Scanner,! ele! captura! Strings! que! venha! do! teclado.! E! o! objeto! p1! está! recebendo! esse!nome!e!armazenando!no! atributo!nome.!

Mostra! o! que! foi! adicionado! nas!variáveis.!

Mostra! o! método! da!Classe!

(16)

4.3! HERANÇA!

!

Herança:!

Herança!é!um!mecanismo!para!definir!novas!classes!a!partir!de!classes!existentes.!

Define! um! relacionamento! entre! classes! onde! uma! classe! compartilha! dados! e/ou!

operações!com!uma!ou!mais!classes.!Por!exemplo,!a!classe!Felinos!herda!todos!os!

atributos! e! operações! da! classe! Animal.! Além! disso! Felinos! define! seus! próprios!

atributos!e!operações!como!o!atributo!corDoPêlo!e!a!operação!miar.!!

Java!implementa!herança!com!o!uso!de!extends.!

Exemplo:!

!

package apostila;

public class Funcionario { int matricula;

String nome; float salario;

public void trabalhar(){

System.out.println("Trabalhando"); }

}

______________________________________________ package apostila;

public class Vendedor extends Funcionario{ float Comissao;

}

_____________________________________________________! import java.util.Scanner;

public class TesteHerança {

public static void main(String[] args) { Vendedor vendedor = new Vendedor(); Scanner en = new Scanner(System.in);

A! cláusula! extends! realiza! a! herança,! criando! a! relação! “É! um”! o! Vendedor!é!um!Funcionario.!

(17)

!

System.out.println("Digite um nome do Vendedor"); vendedor.nome = en.next();

System.out.println("Digite a matricula do Vendedor"); vendedor.matricula = en.nextInt();

System.out.println("Digite salario do Vendedor"); vendedor.salario = en.nextFloat();

System.out.println("Digite a comissão do Vendedor"); vendedor.comissao = en.nextFloat();

System.out.println("O nome digitado foi: "+ vendedor.nome);

System.out.println("A matricula digitado foi: "+ vendedor.matricula);

System.out.println("O salário digitado foi: "+ vendedor.salario); System.out.println("A comissão digitada foi: "+ vendedor.salario); vendedor.trabalhar();

} }!

!

Notem! que! a! única! característica! cadastrada! em! Vendedor! foi! comissão,! Por! meio!

da!herança!ele!pode!utilizar!todas!as!características!declarada!no!funcionário.!

(18)

4.4! ENCAPUSULAMENTO!

!

4.4.1( Definição(de(Modificadores(de(Acesso(

!

!

Encapsulamento:!!!!

!!!!Em!Java!são!utilizadas!as!palavrasTchave!public,!protect!e!private!para!restringir!o!

acesso! a! membros! de! uma! classe.! Um! método! ou! variável! declarado! como! public!

pode! ser! acessado! por! todos,! sem! nenhuma! restrição.! Um! método! ou! variável!

declarado! como! protected! só! pode! ser! acessado! por! membros! da! mesma! classe,!

mesmo! pacote! e! subTclasses! (herança).! Um! método! ou! variável! declarado! como!

private!só!pode!ser!acessado!por!membros!da!mesma!classe.!Se!na!declaração!de!

uma! variável! ou! método! não! for! especificado! nenhum! modificador! de! acesso,! o!

modo! default! será! aplicado.! Neste! modo! default,! esses! membros! só! podem! ser!

acessados!por!membros!da!mesma!classe!ou!do!mesmo!pacote.!!

!

(19)

!

EXEMPLO:!

!

package aulaEncapsulamento;

public class Pessoa {

private String nome;

private String sobrenome;

private float peso;

public void setNome(String nome){

this.nome = nome; }

public String getNome(){

return nome; }

public void setSobrenome(String sobrenome){

this.sobrenome = sobrenome; }

public String getSobrenome(){

return sobrenome; }

public void setPeso(float peso){

this.peso = peso; }

public float getPeso(){

return peso; }

public void andar(){

if(peso>200){

System.out.println("Você precisa andar mais"); }else{

System.out.println("Andar faz bem a saúde"); } } }

4.4.2( Os(métodos(Gets(e(Sets(

São!métodos!de!acesso!aos!atributos!privados.!GET!–!acessa!o!objeto!e!mostra!o!

que!foi!adicionado,!exibe!a!informação!adicionada!no!atributo!privado.!

Já!o!SET!–!acessa!o!objeto!e!altera!ou!adiciona!uma!informação!ao!atributo!private.!

Dessa!forma!podemos!dizer!que,!toda!vez!que!eu!quero!adicionar!ou!modificar!as!

informações!num!atributo!privado!eu!acesso!através!do!método!get!e!set!criado!para!

ela.!

!

!

!

!

Declaremos! os! atributos! sempre! como! private! para! que! eles! não! sofram! alterações! indesejadas! no!objetos.!

Quando! declaramos! que! os! atributos! são! privados,! OBRIGATÓRIAMENTE! temos! que! CRIAR! MÉTODOS! PÚBLICOS! de! acessos! a! esses! atributos.!São!os!Gets%e%Sets.!

Notem!que,!!apesar!de!ter!declarado! o! atributo! privado! eu! estou! acessando!ele!diretamente,!como!no! caso! do”! if(peso>200)”,! isso! só! é! possível! porque,! o! método! está! na! mesma!classe.!

(20)

Classe!de!Teste!do!encapsulamento.!

package encapsulamento;

import java.util.Scanner;

public class TestePessoa {

public static void main(String[] args) { Pessoa pessoa = new Pessoa();

Scanner entrada = new Scanner(System.in); System.out.println("Digite o nome"); pessoa.setNome(entrada.next());

System.out.println("Digite o sobrenome"); pessoa.setSobrenome(entrada.next()); System.out.println("Digite o peso"); pessoa.setPeso(entrada.nextFloat());

System.out.println("O nome é: " + pessoa.getNome());

System.out.println("O sobrenome é: " + pessoa.getSobrenome()); System.out.println("o peso é: " + pessoa.getPeso());

pessoa.andar(); }

}!

!

(21)

!

4.5!

POLIMORFISMO

!

Polimorfismo!nem!do!grego!POLI!=!vários!ou!várias,!MORFISMO!=!formas,!então!são!várias! formas!de!se!realizar!uma!mesmo!função.!Nos!meus!estudos!para!entender!esse!assunto!vi! uma! descrição! no! site! que! fala! assim,! “São! como! os! Power! Rangers! morfão”! e! eu! fique! pensando!realmente!cada!um!vai!se!transformar!com!a!palavra!e!a!ação!de!“morfar”,!mas! cada!um!vai!ter!sua!própria!ação!sua!própria,!cada!um!com!sua!cor,!sua!armas,!etc.!

!

4.5.1( Sobrecarga(

(22)

4.5.2( Sobresecrita(

!

!

4.6! CLASSE!ABSTRATA!

!

(

EXEMPLO(

(

public!abstract!class!ProdutoEletronico!{! ! private!String!modelo`! ! private!String!fabricante`! ! ! ( public(abstract(void(ligar()^! ( public(abstract(void(desligar()^! ! ! ! public!String!getFabricante()!{! ! ! return!fabricante`! ! }! ! public!void!setFabricante(String!fabricante)!{! ! ! this.fabricante!=!fabricante`! ! }! ! public!String!getModelo()!{! ! ! return!modelo`! ! }! ! public!void!setModelo(String!modelo)!{! ! ! this.modelo!=!modelo`! ! }!

(23)

! }!

Implementando(uma(Classe(Abstrata

(

!

public!class!HomeTheather!extends!ProdutoEletronico!{! ! public!void!desligar(){! !!!!!!!System.out.println(“Este!método!desliga!o!Home!theater”)`! }! ! public!void!ligar(){! !!!!!!!System.out.println(“Este!é!o!método!liga!o!Home!theater”)`! }! }!

!

!

4.7! INTERFACES!

!

(24)

!

!

!

Referências

Documentos relacionados

Sempre que as entidades adjudicantes recorrerem à possibilidade prevista no n.º 3, alínea a), de formular especificações técnicas em termos de desempenho ou de

O LAVI vem sendo montado gradativamente, com recursos provenientes do FDA (Fundo de Desenvolvimento Acadêmico) e LABGRAD (Programa de Apoio aos Laboratórios de

O Secretário Geral da OTM-CS fez este pronunciamento durante a cerimónia de abertura da IV Sessão Ordinária do Conselho Nacional do SNEB, realizada em finais de

Convencionam as partes que, exclusivamente para os empregados que mantêm contrato de trabalho com a mesma empresa ou, empresa do mesmo grupo econômico há mais de 10 (dez) anos e

Assim, a casa favorece as relações e a convivência entre (1) gerações de uma mesma família, entre (2) pessoas de famílias diferentes e que são afins na casa em que escolheram

Nesse contexto, vários estudos já foram realizados para elucidar os fatores ambientais e comportamentais associados ao aumento da ocorrência de sobrepeso e de obesidade na

8.4.4 No caso de não ativação do CHIP CLARO em até 30 (trinta) dias contados da contratação dos serviços do COMBO MULTI INTERNET, o cliente passa a ser considerado

• uma entidade adquirida possui uma patente de tecnologia. Ela tem licença de uso exclusivo fora dos Estados Unidos, em troca deste uso a entidade recebe um percentual