A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Revisão POO Profa. Cintia Carvalho Oliveira

Apresentações semelhantes


Apresentação em tema: "Revisão POO Profa. Cintia Carvalho Oliveira"— Transcrição da apresentação:

1 Revisão POO Profa. Cintia Carvalho Oliveira
Doutoranda em Ciência da Computação – UFU Mestre em Ciência da Computação – UFU Bacharel em Ciência da Computação - UFJF

2 Pacotes Em geral, quando desenvolvemos pequenas aplicações, pode ser viável manter o código em um mesmo diretório. Em aplicações maiores sugere-se que o código seja agrupado, de forma que as classes relacionadas fiquem em um mesmo diretório. Esses diretórios - juntamente com os arquivos dentro deles - são chamados de pacotes  Supondo que uma classe chamada Pessoa pertença ao pacote br.com.nomeempresa.nomeprojeto, então seu nome completo será br.com.nomeempresa.nomeprojeto.Pessoa

3 Pacotes Para indicar que um arquivo fonte Java pertence a um dado pacote, a primeira linha de código deste arquivo deve ser a declaração: package br.com.nomeempresa.nomeprojeto Para referenciar uma classe de um pacote, é possível usar o nome completo da classe: import br.com.nomeempresa.nomeprojeto.Pessoa

4 Import Para Scanner temos que escrever: import java.util.Scanner; Por que não fizemos o mesmo com a classe System, String? System e String estão no pacote java.lang, que é implicitamente importado em todo programa Java

5 Import Não precisamos importar a biblioteca Scanner, é só utilizar o nome da classe totalmente qualificado, exemplo: Java.util.Scanner input = new java.util.Scanner(System.in); Qual você prefere?

6 Diagrama de Classe UML  Um dos mais importantes produtos das fases da análise e projeto orientados a objetos é o modelo de domínio da aplicação. Para representar esse modelo a Linguagem de Modelagem Unificada (UML) é uma das ferramentas que podemos adotar. A UML permite expressar o modelo de domínio em um diagrama de classes.

7 Diagrama de Classe  Uma classe descreve um grupo de objetos com características e comportamento similares, relacionamentos comuns com outros objetos e semântica comum. As características dos objetos são descritas pelos atributos e o comportamento é definido pelos métodos.

8

9 Classe Empregado

10 Modificadores de acesso
Classe sem modificador de acesso. Pouco seguro. Suponha que qualquer objeto pudesse ter acesso ao atributo saldo de uma instância de ContaCorrente. Dessa forma, seria possível modificar o saldo de uma conta sem necessidade de fazer um depósito, por exemplo  De maneira a ajudar na tarefa de estabelecer esses limites, tanto os atributos quanto os métodos podem ter modificadores de acesso, que podem ser:

11 Modificadores de acesso
public – atributos e métodos podem ser acessados por qualquer outro objeto. private – os membros da classe não são acessíveis por qualquer outro objeto. protected - membros que recebem esse modificador podem ser acessados fora do pacote apenas por objetos de classes que derivem desta através de herança; default - não é exatamente um modificador, mas sim um nível de acesso. Permite visibilidade apenas dentro do pacote. Não exige um modificador explícito.

12 Encapsulamento Os atributos não devem ser visíveis fora da classe e não se deve conhecer detalhes da implementação dos seus métodos. Essa prática recebe o nome de encapsulamento. Ou seja, devemos construir uma classe de forma que o usuário tenha acesso apenas ao seu conjunto de métodos - chamado de interface. Este conceito não deve ser confundido com o tipo abstrato interface, o qual define métodos que uma classe deve implementar. O tipo interface é definido como se fosse uma classe sem atributos e cujos métodos possuem apenas a assinatura.

13 Encapsulamento Se você estiver usando o NetBeans, selecione no menu Refatorar > Encapsular campos. Na janela que será aberta, pressione o botão Selecionar tudo. Na opção Javadoc você pode escolher se deseja comentários ou não. Os getters são métodos de leitura dos campos e os setters são os métodos de escrita. Esses métodos também são chamados de accessors e mutators, respectivamente. A palavra-chave this é usada para referenciar membros da instância corrente. Ou seja, this refere-se ao objeto que está executando o código onde esta palavra-chave pode ser vista.

14 Modificadores de Classes
Além do modificador public podem ser usados final e abstract. final - a classe não pode ser estendida (herdada). Em alguns casos isso pode ser necessário. Por exemplo, String é uma classe de Java definida como final. Imagine a confusão que seria se os programadores pudessem estender String e redefinir seu comportamento. abstract - Uma classe que tem esse modificador é chamada abstrata e não pode ser instanciada, ou seja, você não pode criar um objeto a partir dela.

15 Construtores Os objetos são construídos utilizando a palavra-chave new. Quando usamos este termo, é executado um código que chamamos de construtor. Para que os objetos sejam instanciados, toda classe deve possuir, no mínimo, um construtor. Se o desenvolvedor não o criar explicitamente, o compilador cria um sem argumentos, que é denominado construtor padrão.

16 Construtores O construtor se assemelha a um método, com a diferença fundamental que um construtor não tem tipo de retorno. Eles devem ter exatamente o mesmo nome da classe onde são declarados e eventualmente podem ter os mesmos modificadores de acesso a membros. Em geral os construtores são usados para inicializar o estado das variáveis de instância. Caso não seja feito o compilador define valores padrão de acordo com o tipo de dado.

17

18 Construtor da classe Empregado

19 Construtores Uma classe pode ter mais de um construtor. Isso é bastante comum e é chamado sobrecarga. É aconselhável que a classe tenha um construtor sem argumentos. Importante quando é necessário estender a classe. Os construtores da subclasse, implicitamente, fazem uma chamada ao construtor sem argumentos da classe mãe

20

21 Programa

22 Modificadores de membros não referentes a acesso
final – declaração de constante. métodos declarados como final não podem ser sobrescritos nas subclasses. Essa restrição garante que um método não será substituído, oferecendo certa segurança à sua implementação. static - Membros de uma classe podem ser declarados como static quando seu comportamento ou valor não dependem do estado de um objeto. Membros declarados como static pertencem à classe, em vez de a uma instância. Um exemplo: o método main() é o ponto de entrada para um programa Java, e a JVM o executa implicitamente sem que seja necessário instanciar um objeto.

23

24 Relacionamento entre classes
Um cliente compra produtos em uma loja e é atendido por um vendedor, um aluno cursa uma disciplina que é ministrada por um professor. Duas classes podem se relacionar através de composição, agregação, associação e generalização/especialização. Composição e agregação são os relacionamentos todo-parte, onde um objeto é parte de outro, como no caso em que Monitor é parte de Computador. Quando um objeto utiliza outro, dizemos que isso é uma associação, tal como Professor ministra Disciplina A generalização/especialização ocorre quando um objeto herda características e comportamento de outro (herança), como no caso de Cachorro é um Anima

25 Agregação: Composição: É parte ou está contida em
Uma classe que está contida na outra "vive" e constitui a outra. Se o objeto da classe que contém for destruído, as classes da agregação de composição serão destruídas juntamente, já que as mesmas fazem parte da outra

26 Herança

27 Relacionamento entre classes

28 Relacionamento TEM _ UM

29 Relacionamento TEM-UM

30 Main

31 Relacionamento É-UM O relacionamento generalização/especialização ocorre quando uma classe B é um subtipo de outra, A. A esse relacionamento chamamos comumente de herança.

32 Herança A palavra-chave super é usada para referenciar membros da superclasse. Toda classe em Java É-UM Object. Object é uma classe da API que é superclasse de todas as classes existentes em Java ou daquelas que são criadas pelo desenvolvedor Quando, na definição da classe, não for especificada uma superclasse - através do uso de extends - o compilador assume que a superclasse é Object. Professor estende Pessoa, que por sua vez estende Object. Todo construtor invoca o construtor de sua superclasse com uma chamada implícita a super().

33 Sobreposição Podemos no Java redefinir um método definido em uma superclasse em uma de suas subclasses. Este mecanismo é denominado sobreposição Vamos analisar um exemplo:

34 Sobreposição

35 Polimorfismo O Java permite tratar objetos das classes derivadas de forma genérica. Utilizamos a sobreposição de um método, ou seja, efetuamos a redefinição de um método definido em uma superclasse em uma de suas subclasses. Java disponibiliza o polimorfismo em tempo de execução, pois possibilita referenciar um objeto de uma classe derivada utilizando para tal uma referência para um objeto da classe base.

36

37

38 Descobrir para onde aponta

39

40 Regras para construtores
Se você criar um construtor com argumentos e precisar de um sem argumentos, então você terá que criá-lo; (Boa prática) A primeira instrução de um construtor deve ser uma chamada a super() ou a um construtor sobrecarregado - por meio de uma chamada a this(); Se você definir um construtor e não inserir uma chamada a this() ou a super(), o compilador irá inserir automaticamente uma chamada a super(), sem argumentos; Uma chamada a super() pode incluir argumentos, que são passados ao construtor da superclasse; Um construtor não pode ser chamado a partir de um método.

41 PREVIEW – Interfaces Gráficas
Caixas de Diálogos javax.swing -> Possui muitas classes para criar interfaces gráficas com usuário (graphical user interface – GUIs)

42

43 Ex 4 – valor 1 pt Escreva uma classe Java, Vendedor, que tenha como atributos nome completo (String), total de vendas (double) e salário (double). Para calcular o total de vendas o usuário deverá entrar com uma venda de cada vez e calcular o total. A classe deverá gerar o salário do vendedor, cada vendedor recebe R$ 600 por mês e mais 9% de suas vendas. O vendedor com mais vendas receberá um bônus de R$ 200,00, o vendedor com menos vendas deverá ser advertido. Escreva uma classe Java, VendedorTeste que solicite que entre com os dados dos vendedores da empresa (repetição controlada por sentinela), e as vendas (repetição controlada por sentinela). O programa deverá imprimir o nome, total de vendas e salário de cada vendedor, e indicar o vendedor vencedor e o qual será advertido.

44 Instanciar melhor_vend, pior_vend, vend do tipo Vendedor
<contador_vend> = 1; Deseja inserir dados de um novo vendedor? s ou n Novo = s ou n Enquanto novo igual a s faça digite o nome do funcionario -> var nome <contador> = 1 entre com a <contador>ª venda, -1 para sair -> var venda total = total + venda <contador>++ entre com a <contador>ª venda, -1 para sair salario = 9% do total + 900 :: setNome, setTotal, setSalario de vend se <contador_vend> == 1 melhor e pior vendedor = vend senão se vend.total>melhor_vend.total imprime dados de melhor melhor = vend senão, se vend.total<pior_vend imprime dados de pior pior = vend senão imprime dados de vend <contador_vend>++

45 1ª Parte do Trabalho Final
As equipes deverão entregar, por escrito ou impresso, a descrição do sistema que irão implementar e o diagrama de classes em UML


Carregar ppt "Revisão POO Profa. Cintia Carvalho Oliveira"

Apresentações semelhantes


Anúncios Google