Classes e Objetos

 

 

 

            1º Nível

 

 

 

 

 


            2º Nível

 

 

 

 


            3º Nível

 

 

 

            n Níveis

 

 

 

 

Abstração de Tipos de Dados

 

            Quando itens de dados são compostos para tipos de dados, semelhante a uma data, você pode definir um número de bits de programas que especifica a operação do tipo de dados.

            Em Java você pode criar uma associação entre o tipo data e a operação tomorrow a seguir:

 

            public class Date {

                        private int day, month, year;

                        public void tomorrow( )

                        {          //          código que incrementa o dia

                        }

            }

 

 

Definição de Métodos

 

            Em Java, métodos são definidoss usando uma aproximação que é muito similar à usada em outras linguagens, como por exemplo C e C++. A declaração é feita da seguinte forma:

 

            < modifiers >   < tipo de retorno >  < nome >  ( < lista de argumentos > ) < bloco >

 

            < modifiers > -> segmento que possue os diferentes tipos de modificações  incluíndo public, protected  e private.

            < tipo de retorno > -> indica o tipo de retorno do método.

            < nome > -> nome que identifica o método.

            < lista de argumentos > -> todos os valores que serão passados como argumentos.

           

            public void addDays (int days)

 

 

 

 

Passagem de Valores

 

            Em Java o único argumento passado  é  “by-value”; este é um argumento may not be changed do método chamado. Quando um objeto é criado, é passado um argumento para o método e o valor deste argumento é uma referência do objeto. O conteúdo  do objeto passível de alteração é chamado do método, mas o objeto referenciado jamais é alterado.

 

 

A Referência This

 

            É aplicado a métodos não estáticos.

 

            O Java associa automaticamente a todas as variáveis e métodos referenciados com a palavara this. Por isso, na maioria dos casos torna-se redundante o uso em todas as variáveis da palavra this.

            Existem casos em se faz necessário o uso da palavar this. Por exemplo, você pode necessitar chamar apenas uma parte do método passando uma instância do argumento do objeto. (Chamar um classe de forma localizada);

 

                                   Birthday bDay = new Birthday(this);

 

 

Ocultando Dados

 

            Usando a palavra private na declaração de day, month e year na classe Date, você impossibilitará o acesso a estes membros de um código fora desta classe. Você não terá permissão para atribuir valores, mas poderá comparar valores.

 

 

Encapsulamento

 

            É uma proteção adicional dos dados do objeto de possíveis modificações impróprias, forçando o acesso a um nível mais baixo para tratamento do dados.

 

 

Sobrescrevendo Métodos

 

            O Java permite que você tenha métodos com o mesmo nome, mas com assinaturas diferentes. Isto permite a reusabilidade dos nomes dos métodos.

 

            public void print( int i )

            public void print( float f )

            public void print( String s)

 

            Quando você escreve um código para chamar um desses método, o método a ser chamado será o que coincidir com tipos de dados da lista de parâmetros.

 

 

Construtores

 

            O mecanismo de inicialização do Java é automático, ou seja se não incializarmos um construtor, o Java o inicializará automaticamente.

             Mas existem casos que se faz necessário a declaração explicita dos construtores.

 

            Para escrever um método que chama um construtor, você deve seguir duas regras:

 

            1ª O nome do método precisa ser igual ao nome da classe.

            2ª Não deve retornar um tipo declarado para o método.

 

 

Subclasses (Relacionadas)

 

            Na classe Pai você deve declarar os objetos comun a todos, e nos sub-níveis (Subclasses), você declara as particulariedades:

 

            public class Employee {

 

                        private String name;

                        private Date hireDate;

                        private Date dateOfBirth;

                        private String jobTitle;

                        private int grade;

 

                        . . . . . . .

 

            }

 

 

 

 

 

Subclasses (Extensões)

 

            Em linguagens de orientação a objetos, um mecanismo especial é fornecido para que permita ao programa defina classes e termos previstas na definição de outras classes. Esta arquitetura em Java usa a palavra extends.

 

                        public class Employee {

 

                        private String name;

                        private Date hireDate;

                        private Date dateOfBirth;

                        private String jobTitle;

                        private int grade;

 

            }

 

           

            public class Manager extends Employee {

           

                        private String departament;

                        private Employee [ ] subordinates;

 

                        ...........

            }

 

 

Herança Simple

 

            Em Java não existe herança múltipla.

            Em Java os Construtores não são herdados.

 

            Java permite que uma classe extenda uma outra classe, com isso esta classe herda as características da outra classe.

 

 

Polimorfismo

 

            A idéia de polimorfismo é a de muitas formas, onde eu posso utilizar uma classe de diversas maneiras e formas possíveis.

 

            public class Employee extends Object

 

and

 

            public class Manager extends Employee

 

Argumentos de Métodos e Coleções Heterogeneas

 

            Usando esta aproximação você pode escrever métodos que aceitam um objeto genérico.       O uso do polimorfismo fornece uma série de facilidades.

 

            public TaxRate findTaxRate( Employee e) {

           

                        Manager m = new Manager( );

                        . . . . . . .

                       

                        TaxRate t = findTaxRate(m);

 

            Isto é possível porque um Gerente é um empregado.

 

            Uma coleção heterogênea é uma coleção de coisas diferentes. Em linguagem orientada a objetos, você pode criar uma coleção de coisas que tem uma classe de antepassados comuns. Assim nós poderemos fazer isso.

            Employee [ ] staff = new Employeee [ 1024 ];

            staff[ 0 ] = new Manager ( );

            staff[ 1 ] = new Employee ( );

 

E assim sucessivamente nos podemos escrever um método de tipos que põe empregados ordenados por idade ou em ordem salarial sem ter que se preocupar com a ordem de inserção.

           

 

O Operador instanceof

 

            Fornece o dado que você adquiriu através da passagem de parâmetros.

            Caso você receba um object por referência do tipo Employee, esta referência poderia não ser mostrado para Manager. Se você quiser testar isso use instanceof.

 

            public void method(Employee e) {

                        if (e instanceof Manager) {

                                  

                        }

                        else if ( e instanceof Contractor) {

 

                        }

                        else      {

                       

                        }

            }

 

 

Objetos Lançados

 

            Em circunstâncias onde você recebeu uma referência para uma classe pai, e você determinou que o objeto é de fato uma subdivisão de classe particular usando o operador de instanceof, você pode restabelecer a funcionalidade completa do objeto lançado.

 

 

Sobre-escrevendo Métodos

 

            O Java permite que você declare métodos na classe pai e não desenvolva nenhuma lógica dentro desses métodos, permitindo com isso que o desenvolvimento desses métodos venha a ser trabalhados dentro das sub-classes posteriores.

 

 

            Class Funcionario( )

 

                        ler( )

 

            Class Motorista( )

 

                        ler ( )

 

                                   Super.ler( )      -> Referencia o método da classe pai

 

 

Comparando Java com outras Linguagens

 

            Em C++ você pode adquirir este comportamento, desde que você marque o método como virtual na fonte.

 

 

Classes se agrupando            -           Pacotes

 

            Java provê o mecanismo de pacotes como um modo de se agrupar classes relacionadas. Tão longe, todos nossos exemplos pertencem à falta ou pacotes não mencionados.


                                                               A

                                               @

 

 

 


                        a

                                                                                                                                                         B

                                                                       b                                                                                @        B

 

 


                                                                                                                                 a                      b                      c            - B.e

 

 

onde:

 

            @ - Pacote      -

            letra (a, b ...) - classe

           

           

 

A declaração import

 

            Em Java, quando você quer usar instalações de pacotes, você usa a declaração de importação para contar para o compilador onde achar as classe que você vai usar.

            A declaração de importação (import) deve preceder a declaração de todas as classes.

 


Exercícios

 

class Prog0501

     {

              public static void main(String arg[ ])

                    {

                       int a, b=10, c=3;

                       a = func(b,b+c); //chamada de funcao. O retorno é passado para a variável a

                       System.out.println("valor de a = " + a);

                    }

 

              // A definicao da funcao esta logo abaixo

 

              public static int func(int x, int y)

                     {

                        int ret;

                        ret = x+y;

                        return ret;

                     }

      }

 

Hosted by www.Geocities.ws

1