Classes, Objetos, Atributos e Métodos JAVA Faculdade Mauricio de Nassau Linguagem de Programação II Curso de Engenharia de Telecomunicações Sumário • Definição e Modificadores de acesso: – Classes; – Objetos; – Métodos; – Atributos. Definindo novos tipos Ao invés de tipos pré-definidos como String e int, os tipos específicos da aplicação, como Carro e Cliente precisam ser definidos pelo programador. Os elementos dos tipos definidos pelo programador são objetos! Definindo novos tipos Quantos Objetos? e Quantas Classes? Definindo novos tipos class Carro { CorpoDaClasse } • Dois novos Tipos (Objetos do mundo real especificados na linguagem Java -> Classes). class Moto{ CorpoDaClasse } Classes • Tipo definido pelo usuário que possui especificações (características ou estados, comportamentos e identidade) (MATTOS, 2007). • Conjunto de objetos do mesmo tipo, com a mesmas características (métodos e atributos). Classes • Estado - Reação quando um método e aplicado. • Comportamento - execução dos métodos a ele relacionados. • Identidade - forma como se distinguem dois objetos com o mesmo comportamento e estado. Definindo classes em Java class NomeDaClasse { CorpoDaClasse } O corpo de uma classe pode conter: – Atributos; – Métodos; – Construtores; – Outras classes ... Modificadores de acesso p/ Classes • default (pacote): classes sem modificador de acesso explícito, só podem ser instanciadas dentro da própria classe ou por classes do mesmo pacote. class NomeClasse Modificadores de acesso p/ Classes • public : classes public podem ser instanciadas por qualquer objeto livremente. public class NomeClasse • Os modificadores de acesso (final e abstract) serão abordados na segunda unidade. Classes X Objetos • Classe é uma descrição de algo existente no domínio do problema (aplicação); • É usada na criação de múltiplos objetos; • Descreve os dados (atributos) e o comportamento (métodos) de um objeto. Classes X Objetos • Um Objeto é uma instância particular de um tipo de dado específico (classe); • É uma instância de uma classe; • Instanciar um objeto é criar seu espaço de memória e repassar um ponteiro para ele. TipoClasse nome = new ConstrutorTipoClasse (); Carro ferrari = new Carro(); Objetos DVD Operações que o DVD pode executar Estado atual do DVD; o que ele está fazendo... Objetos Carro Operações que um carro pode executar Estado atual do carro aumentarVelocidade velocidade placa 100 km/h kkx 3111 diminuirVelocidade Estado do 0bjetos Carro diminuirVelocidade (20) aumentarVelocidade aumentarVelocidade velocidade placa velocidade placa 100 km/h kkx 3111 80 km/h kkx 3111 diminuirVelocidade diminuirVelocidade Objetos • Métodos: as operações que o objeto pode executar. • Atributos: informações sobre o objeto, suas propriedades e seu estado atual. O estado é encapsulado, só pode ser modificado pelos métodos do próprio objeto. Variáveis • Variáveis são usadas em linguagens em geral para armazenar valores; • Valores são passados para variáveis através de operações de atribuição – atribuição de valores é feita através de literais Ex: int intQuantidadeAlunos = 14; Variáveis – atribuição de referências (endereços para valores) é feita através de operações de construção de objetos e, em dois casos, pode ser feita através de literais. Ex: Conta contaClientePreferencial = new Conta(); String s = "abcde"; int[] v = {1, 2, 3}; Escopo Variáveis • Atributos de dados (declarados no bloco da classe): podem ser usados em qualquer lugar (qualquer bloco) da classe – uso em outras classes depende de modificadores de acesso (public, private, etc); – existem enquanto o objeto existir( ou enquanto a classe existir, se declarados static). Escopo Variáveis • Variáveis locais (declaradas dentro de blocos de procedimentos) – existem enquanto o procedimento (método, bloco de controle de execução) estiver sendo executado; – não pode ser usado fora do bloco; – não pode ter modificadores de acesso (private, public, etc). Definindo atributos em Java • Um atributo de uma classe tem a seguinte estrutura genérica: <visibilidade> <tipo><nomeVariavel> Modificadores de acesso p/ Atributos • <visibilidade> - é o modificador de acesso para o atributo, podendo ser: – public : poderá ser acessado por qualquer classe. – private : só poderá ser acessado dentro da mesma classe. – default (package) : só poderá ser acessado dentro da própria classe ou por classes do mesmo pacote. Modificadores de acesso p/ Atributos – protected : só poderá ser acessado por classes do mesmo pacote ou por subclasses (veremos isto em herança). Definindo atributos em Java class Carro { private String fabricante; private String placa; private int numeroPortas; private ... } Palavras reservadas <visibilidade> Tipo do Atributo <tipo> Nome do Atributo <nomeVariavel> Definindo atributos em Java • Vários atributos de um mesmo tipo podem ser declarados conjuntamente. • Podemos especificar que um atributo deve ser inicializado com um valor específico. Definindo atributos em Java class Carro { private String fabricante, modelo; private String placa, chassi; private int numeroPortas, anoFabricacao; private String paisFabricacao = “Brasil”; private ... } Indica Mudança de valor Valor para inicialização Que atributos definir? • Os atributos a serem definidos em classe devem ser necessários para implementar um dos serviços do sistema. Por exemplo, lembre que informações são necessárias para cadastrar um cliente Definindo atributos em Java class Cliente { private String nome, cpf; private String rua, cep, cidade; private String pais = “Brasil”; private ... } Métodos • Um método descreve o comportamento de uma classe; • Um método de uma classe tem a seguinte estrutura genérica: <visibilidade> <static> <tipo_retorno> <nome_método> (<parâmetros>) { // corpo ou escopo do método } Modificadores de acesso p/ Métodos • <visibilidade> - é o modificador de acesso para o método, podendo ser: – public : o método poderá ser acessado por qualquer classe. – private : o método só poderá ser acessado dentro da mesma classe. – default (package) : o método só poderá ser acessado dentro da própria classe ou por classes do mesmo pacote. Modificadores de acesso p/ Métodos – protected : o método só poderá ser acessado por classes do mesmo pacote ou por subclasses (veremos isto em herança). Modificadores de acesso p/ Métodos • <static> - modificador que define se o método é de classe (com static) ou de instância (sem static). Métodos de classe podem ser chamado sem a especificação de um objeto. Declarando Métodos • <tipo_retorno> - declaração do tipo de retorno do método, que pode ser qualquer um dos tipos primitivos, qualquer objeto. Atenção!!! Tipo void, que significa que o método não retorna valor algum. Declarando Métodos • (<parâmetros>) : – um método pode ter zero ou mais argumentos, também chamados parâmetros; – cada argumento indicará um pedaço da informação que deve ser passada ao método no momento de sua chamada; Declarando Métodos • (<parâmetros>) : – quando houver mais de um argumento, eles devem ser separados por vírgulas; – caso o método não receba argumentos, os parênteses devem ser deixados vazios. Algumas regras aplicadas aos métodos • Métodos retornam, no máximo, um valor, podendo ser uma variável ou um objeto; • Se o tipo de retorno do método não for void, o corpo do método tem de ter um comando return; Algumas regras aplicadas aos métodos • Passagem de parâmetros com tipo diferente dos parâmetros recebidos (assinatura do método) gera erro de sintaxe; • Um método não pode ser definido dentro de outro método; Definindo Métodos em Java Um método pode executar várias instruções, mas a mais simples é a instrução (comando) de atribuição: atributo = expressão Definindo Métodos em Java • Para executar a instrução de atribuição o computador – avalia expressão, obtendo um valor; – Faz com que o novo valor de atributo seja o valor gerado pela experessão. Métodos construtores • Métodos construtores são métodos especiais definidos com o mesmo nome da classe; • Construtores são chamados automaticamente toda vez que um objeto da classe é criado; Métodos construtores • Os métodos construtores servem para inicializar as variáveis de instância de seus objetos e não possuem nenhum valor de retorno. class Cliente { private String nome, cpf; // Construtor para classe Cliente Cliente (String nomeCliente, String cpfCliente) { nome = nomeCliente; cpf = cpfCliente; } } Métodos construtores • Toda e qualquer classe do Java possui um construtor padrão, que não faz nada nem recebe parâmetros, e que só será chamado se nenhum construtor for definido.