início projeto certificação scjp

51
Início Projeto Certificação SCJP

Upload: andren

Post on 24-Feb-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Início Projeto Certificação SCJP. Capítulo I. DECLARÇÕES E CONTROLE DE ACESSO. Objetivos para a certificação:. Declarar Classes e Interfaces; Desenvolver Interfaces e Classes Abstract; Usar Primitivos, Arrays , Enums e Identificadores Legais; - PowerPoint PPT Presentation

TRANSCRIPT

Incio Projeto Certificao SCJP

Incio ProjetoCertificaoSCJPCaptulo IDECLARES E CONTROLE DE ACESSOObjetivos para a certificao: Declarar Classes e Interfaces; Desenvolver Interfaces e Classes Abstract; Usar Primitivos, Arrays, Enums e Identificadores Legais; Usar Mtodos Static, Nomeao JavaBeans; Exerccios;Reviso O que um programa em Java ? principalmente uma coleo de objetos falando com outros objetos por meio da invocao do mtodos uns dos outros.

Classe Um modelo que descreve os tipos de estado e de comportamento que os objetos do seu tipo podem ter.Reviso Objeto uma instncia de uma determinada classe. Essa instncia ter o prprio estado e ter acesso a todos os comportamentos definidos pela classe da qual foi criada. (Ex: new CidadeVO();)

Estado Cada objeto ter o seu conjunto nico de variveis de instncia conforme definido na classe. Coletivamente, os valores atribudos s variveis de instncia de um objeto compem o estado do objeto.

Mtodo (COMPORTAMENTO) ao criar uma classe o programador cria mtodos para essa classe. nos mtodos que a lgica da classe armazenada. Nos mtodos, o verdadeiro trabalho realizado.Reviso Identificadores Todos os componentes de Java classes, variveis e mtodos - precisam de nomes, esses nomes so conhecidos como identificadores.

Herana Permite ao cdigo definido em uma classe ser reutilizado em outras classes. (SuperClasses, SubClasses, Ex: SuperVO, CidadeVO);

Interfaces - uma espcie de superclasse 100% abstract que define os mtodos que uma subclasse deve suportar.

OBS: abstract a forma de obrigar mtodos ou classes a serem implementadas em suas classes filhas.Identificadores e JavaBeansIdentificadores Abordados na Certificao:

Identificadores Legais

Convenes de Cdigo Java da Sun

Padres de nomeao JavaBeans

Identificadores Legais Regras dos Identificadores Legais:

Devem comear com letras. (Ex: _a, $c, cont); No podem comear com nmeros.

Depois do primeiro caractere pode conter combinao de letras, caracteres de moedas, de conexo (_), e nmeros.

No h limite para nmero de caracteres de um identificador.

No se pode usar uma palavra-chave Java como identificador .(Ex: final, double, int, ...).

Os identificadores Java so case sensitive, ou seja, foo e Foo, so diferentes.Convenes de Cdigo Java da SunA Sun Criou um conjunto de padres de programao para Java e publicou esse padres em um documento chamado Convenes de Cdigo Java. Veremos essas convenes a seguir.

Ops!!! As questes do exame no seguem as convenes de cdigo, devido a limitaes do programa de provas que usado para ministrar o exame internacionalmente.

Exemplo de Cdigo:

Class Wombat implements Runnable { private int i; public synchronized void run() { if (i%5 != 0) { i++; } for (int x=0; x 1) thread.yield(); } System.out.print(i + ); } Public static void main(String[] args) { Wombat n = new Wombat(); for ( int x=100; x>0; --x) { new thread(n).start();}}}O nico padro que seguido tanto quanto possvel no exame real o dos padres de nomeao. Como:

Classes e interfaces - Primeira letra maiscula e, se vrias palavras forem escritas juntas a primeira letra de cada palavra deve ser maiscula (formato ingls de camelCase). Para Classes os nomes devem ser substantivos. Ex: Impressora, Conta, ...

Mtodos - A primeira letra deve ser minscula, o formato camelCase deve ser usado. Ex: getBalanco, getNomeCliente;

Variveis segue as mesmas regras dos mtodos.

Constantes: So criadas marcando-se variveis como static e final. Devem ser nomeadas usando-se letras maisculas e (_) como separador de palavras. Ex: ALTURA_MINIMA;

Java BeansJavaBeans so classes Java que tm propriedades. Propriedades so como variveis de instncia private. Sendo assim a nica maneira pela qual podem ser acessadas de fora da sua classe atravs de mtodos da classe. (setter , getter); Segue as Regras de nomeao de propriedades JavaBeans para o exame:

getSize() prefixo get, seguido pela primeira letra maiscula; Boolean get ou is. Ex: getMaior(); ou isMaior(); setSize() prefixo set, seguido pela primeira letra maiscula; public void setNomeAluno(String nome){...}; public String getNomeAluno () {..}

Declarar ClassesEscrevendo cdigo Java estamos escrevendo classes ou interfaces. Dentro dessas classes temos variveis e mtodos, onde a forma como isso tudo escrito pode afetar drasticamente o comportamento do cdigo. Uma prova disso so mtodos do tipo public ou do tipo private, ambos podem causar grandes diferenas na execuo do cdigo.Regras de Declarao de Arquivos-Fonte Deve existir somente uma classe public em cada arquivo de cdigo-fonte.

Os comentrios podem aparecer em qualquer lugar do cdigo-fonte. So independentes de quaisquer regra.

Se houver uma classe public no arquivo o nome do arquivo deve ser o mesmo da classe. Ex: public class Cidade{}, Cidade.java;

Declarao de pacote deve estar na primeira linha do cdigo-fonte, e as importaes logo abaixo.

Um arquivo pode ter mais de uma classe no-public.

Arquivos que no possuam classes public podem ter o nome diferente das classes do arquivo.Declarao e Modificadores de ClasseSeque a declarao de uma Classe simples.Ex: class minhaClasse{ }

possvel adicionar modificadores antes da declarao da classe.Ex: public classe MinhaClasse {}

Existem duas categoria de modificadores: De acesso: public, protected, private; Que no se referem a acesso: strictfp, final, abstract;

Quando dizemos que uma classe A tem acesso a uma classe B, estamos dizendo que, a classe A pode instanciar a Classe B, pode estender a classe B, pode tambm acessar a classe B, dependendo do controle de acesso dos mtodos e variveis dessa classe.

Acesso DefaultConsiste em a classe no possuir modificadores precedendo-a na declarao. Ex: class Estado{}

um acesso restrito ao nvel de pacote, onde uma classe com acesso default s pode ser vista (acessada) por classes de dentro do mesmo pacote. Ex:

package financeiro;class ContasPagar {}

Observe o segundo arquivo:

package venda;import financeiro.ContasPagar;class Venda extends ContasPagar { }

Erro: Can`t acess class financeiro.ContasPagar. Class or interface must be public, in same package, or an acessible member class.

Acesso PblicoA declarao de uma classe com a palavra-chave public d a todas as classes de acesso, de todos os pacotes, acesso pblico classe. Sendo indispensvel ainda a importao dessa classe.

Considerando o exemplo anterior (Acesso Default), como poderamos corrigir o erro apresentado:

package financeiro;public class ContasPagar {}

package venda;import financeiro.ContasPagar;class Venda extends ContasPagar { }

Outros Modificadores de Classes (No-Referente a Acesso)O programado pode modificar uma classe usando as palavras-chave final, abstract, ou strictfp. Esse modificadores existem em adio a qualquer controle de acesso. Ento possvel declarar uma classe como public e final ao mesmo tempo. Mas no sempre que isso ocorre. possivel marcar uma classe como final e strictfp ao mesmo tempo, mais nunca, marcar uma classe como final e abstract.

Consideraes strictfp => pgina 8.

Classe FinalUsando na declarao de sua classe a palavra-chave final , voc est classificando sua classe em questo a no permitir que ela possa ser subclassificada. Em outras palavras jamais outra classe poder estender uma classe final. Caso o faa ocorrer uma exceo.

Por que criar uma classe final ? Para uma garantia absoluta de que nenhum dos mtodos dessa classe jamais vai ser substitudo. Um exemplo disso so as classes das bibliotecas fundamentais do Java, como a classe String. Sendo assim use final para segurana.Classes AbstractUma classe definida com abstract nunca poder ser instanciada. Sua nica funo ser estendia (subclassificada).

abstract class Carro {private String cor;private String chassi;public abstract void PotenciaMotor();public abstract void VelociadadeMaxima();}Declarao InterfacesUma interface um contrato. Voc est definindo o que a classe pode fazer, sem mencionar nada sobre como a classe o far.Uma interface pode ser implementada por qualquer classe, de qualquer rvore de herana. Podendo assim definir que duas classes implemente a mesma interface.Considere uma interface, sendo uma classe 100% abstract.

Verificar figura pgina 11.Declarao InterfacesRegras para declarao de mtodos e variveis em uma interface:

Todos os mtodos so implicitamente public e abstract; As interfaces s podem declarar constantes e no variveis de instncia. Assim toda varivel deve ser definida public, static e final; J que os mtodos so abstract, ele no podem ser marcados como final, native, strictfp ou synchronized; Uma interface pode estender uma ou mais interfaces diferente; Uma interface no pode estender nada que no seja outra interface; Um interface no pode implementar outra interface ou classe; Uma interface deve ser declarada com a palavra-chave interface;

Exemplo de declarao de uma interface:public abstract interface CidadeInterface { }

O modificador abstract considerado redundante, as interfaces so implicitamente abstract.Declarao InterfacesO modificador public na declarao da interface obrigatrio de voc deseja que ela tenha acesso pblico e no o default.

J os modificadores public e abstract nos mtodos redundante j que todos os mtodos de uma interface so implicitamente public e abstract.

Verificar exemplos pgina 12;Declarao Constantes de InterfacesAo colocar uma constante em uma interface, voc est garantindo que todas as classes que implementarem essa interface tero acesso a essa constante.

Discutir cdigo pgina 13;Declarar Membros de ClassesModificadores de Acesso: public; protect; default; private;

Modificadores no referente a Acesso.

Declarando Enums.Membros PublicQuando um mtodo ou varivel declarado public , isso significa que todas as outras classes, independente do pacote ao qual pertenam, podem acessar o membro em questo (Assumindo-se que a prpria classe esteja visvel). Ex:

Existem trs formas de acessar um mtodo:

Invocando um mtodo declarado na mesma classe; Invocando um mtodo usando uma referncia da classe; Invocando um mtodo herdado;

Membros PublicEx: package venda;import basico.*;class Venda {public static void main (String[] args) {Cidade c = new Cidade();c.incluir();}}

package basico;public class Cidade {public void incluir() {System.out.println(DADOS INCLUIDOS);}}

Membros PrivateMembros marcados como private no podem se acessados por cdigo em nenhuma outra classe que no aquela na qual o membro private foi declarado.Ex:package basico;public class Cidade {private void incluir() {System.out.println(DADOS INCLUIDOS);}}

Membros Privatepackage venda;import basico.*;class Venda {public static void main (String[] args) {Cidade c = new Cidade();c.incluir();}}

Erro: cannot find symbolSymbol : method incluir()

Membros PrivateE se uma subclasse tentasse herdar um membro private da sua superclasse ? Quando um membro declarado private, uma subclasse no pode herdar dele.

Assim uma subclasse no pode ver, usar e nem sequer pensar nos membros private da sua superclasse.Membros Protect e DefaultOs nveis de controle de acesso protect e default so quse idnticos, mas com uma diferena fundamental. Um membro default s pode ser acessado se a classe que o estiver acessando pertencer ao mesmo pacote, enquanto que um membro protect pode ser acessado (atrves da herana) por uma subclasse mesmo se a subclasse estiver em um pacote diferente.

Exemplo pgina 19.Detalhes de ProtectQuando criamos uma varivel de instncia protect, ela se torna acessvel para todas as classes do pacote onde est a classe na qual ela foi criada, bem como herdvel por quaisquer subclasses de fora do pacote, ou seja, subclasses da classe onde foi criada a varivel tero acesso a essa varivel, podendo essas subclasses estarem fora do pacote da mesma.

Exemplo pgina 20 e 21.Detalhes de ProtectQuando uma subclasse, de fora do pacote herda um membro protect, esse membro torna-se essencialmente private dentro da subclasse, de forma tal que apenas a subclasse e as suas subclasses podem acess-los.

Pacote A

Pacote B

Parenteprotect varivel xFilhoprivate varivel xSobrinhonew Filho();x no acessvelherdaDetalhes de DefaultExemplo de cdigo usando Default: package basico;public class Cidade {int x = 9;}package basico;public Estado extends Cidade{static public void main(String[] args) {System.out.println(variavel x = + x);}}

Se mudarmos o pacote da segunda classe, ocorre o seguinte erro de compilao: Estado. Java:4: Undefined variable: xSystem.out.println(variavel x = + x);1 errorMtodos FinalA palabra-chave final impede que um mtodo possa ser substitudo em uma subclasse, e frequentemente usada para forar os recursos API de um mtodo. Exemplo disso a classe String, n0 possvel subclassificar essa classe, ou seus mtodos, devido a argumentos final em seus mtodos.

Esse argumento pode ser usado tambm em variveis, quando isso ocorre essa varivel passar a no poder ser alterada, quanto ao seu valor.Mtodos Abstract um mtodo declarado, mas no implementado. Um mtodo marcado como abstract quando se quer forar as subclasses a fornecer a implementao deste.Ex: public abstract void doIt();

Obs: invlido ter um nico mtodo abstract que seja em uma classe que no seja declarada explicitamente como abstract. Porem o inverso permitido, ou seja, possuir uma classe abstract e dentro dela possuir mtodos que no sejam abstract.

A primera subclasse concreta (no-abstract) de uma classe abstract deve implementar todos os mtodos abstract da superclasse. Exemplo pgina 25.Mtodos SynchronizedA palavra-chave synchronized indica que um mtodo s pode ser acessado por um thread de cada vez. Essa questo ser tratada no captulo 9. Basta apenas saber que esse modificador s pode ser aplicado a mtodos no a variveis, nem classes, apenas a mtodos.

Ex: public synchronized Record retrieveUserInfo(int id){}Mtodos NativeO modificador native indica que o mtodo est sendo implementado dependente da plataforma, freqentemente em C.

No necessrio saber como usar mtodos nativos para o exame, apenas saber que native um modificador e que native s pode ser aplicado a mtodos no a classes, nem variveis, apenas a mtodos.Declaraes de VariveisExistem dois tipo de variveis em Java:

primitivos um primitivo pode ser de oito tipos diferente: char, boolean, byte, short, int, long, double ou float. Uma vez declarado o seu TIPO primitivo no pode nunca ser alterado, embora seu valor possa se modificar. variveis de referncia so usadas para se referir a um objeto. Esse contexto ser melhor abordado no captulo 2.Declaraes Primitivosbyte b;

boolean isNovo;

int x, y, z;Declaraes Variveis de RefernciaObject o;Dog minhaNovaReferencia;String s1, s2, s3;Variveis de instnciasSo definidas dentro da classe porem fora de qualquer mtodo, e s so inicializados quando a classe instnciada.

class Pessoa {// Defini campo (variveis de instncia) para a // instncia de Pessoa.private String nome;private String sobrenome;private String enreco;}Variveis de instnciasPara o exame voc precisa saber que as variveis de instncia:

podem usar todos os nveis de acesso; podem ser marcadas como final e transient; no podem ser marcadas como: abstract, sinchronized, strictfp, native, static.Variveis LocaisSo aquelas variveis declaradas dentro de um mtodo. Isso significa que a varivel no apensa inicializada dentro do mtodo, mas tambm declarada dentro dele.Ela inicializada e destruda quando o mtodo inicia e logo aps quando ele finalizado.Variveis FinalDeclarar uma varivel com a palavra-chave final impossibilita a reutilizao dessa varivel depois de ela ter sido inicializada com um valor explcito. Isso significa, que depois que uma varivel final receber um valor, esse valor no poder ser alterado novamente.Variveis TransientSe marcar uma varivel de instncia como transient, voc est dizendo JVM para ignorar essa varivel quando voc tentar serializar o objeto que a contm. Serializao foi adicionada ao exame na verso 5 do Java, e ser estudado no captulo 5.Variveis VolatileDiz JVM que um thread que acesse a varivel deve sempre reconciliar a sua cpia private da varivel com a cpia master presente na memria. Como que ? No se preocupe no exame tudo que voc precisa saber que , assim como transient, esse modificador s pode ser aplicado a variveis de instncia.Variveis e Mtodos Static usado para criar variveis e mtodos que iro existir independentemente de quaisquer instncia criadas para a classe. Membros static existem antes mesmo de voc criar uma nova instncia de uma classe.Declarando ENUMSPermite restringir uma varivel para ter um de apenas uns poucos valores pr-definidos, em outras palavras, um valor de uma lista enumerada.Ex: enum Cafe {PEQUENO, MEDIO, GRANDE}

Para pegar o valor, ser necessrio: Cafe cf = Cafe.PEQUENO;Declarando ENUMSUm ENUM pode ser declarado como as suas prprias classes separadas, ou como membros de classes, mas no podem ser declarados dentro de um mtodo. Isso pode modificar a forma como acessar um ENUM.

Exemplo pgina 36 e 37.ExercciosPgina 44 Teste Individual (9 Questes).

OBRIGADO!!!