Introdução Ao POO

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 86

PROGRAMAÇÃO ORIENTADA A OBJETO

IntroduçãoUnidade
à programação
x: Título da unidade orientada

a objetos (POO)
Quem sou eu
Júlio César Andrade
Bacharel em Engenharia de Computação - UEFS
Especialista em User Experience - UNIFACS
Mestrando em Ciências da Computação - UEFS

2
Roteiro
Contextualização e motivação:

● Histórico das linguagens de programação;


● Processos de abstração e representação.

Conceitos fundamentais:

● Classes, objetos, métodos e interação entre objetos;


● Herança e polimorfismo.

Projeto de software orientado a objetos:


● Como analisar problemas para projetar soluções;
● Ambientes de desenvolvimento para linguagem Java.

3
CONTEXTUALIZAÇÃO

História da POO

Década de 40 Década de 50 Década de 60 Década de 70 Década de 80

- Surgimento da - Surgimento da - Surgimento da - Surgimento da - Smalltalk se torna


Plankalkül FORTRAN SIMULA. Smalltalk pública
- Surgimento da C++

4
CONTEXTUALIZAÇÃO

História da POO

Java é uma linguagem de programação de


alto nível, orientada a objetos e
Década de 90 multiplataforma. Ela foi desenvolvida pela
Sun Microsystems (agora propriedade da
Oracle) na década de 1990 e se tornou
uma das linguagens mais populares e
amplamente utilizadas na indústria de
- Popularização POO
desenvolvimento de software.
- Lançamento da JAVA

5
ANTES DE COMEÇAR

Como funciona o Java

Os arquivos ".class" são escritos pelo compilador em uma linguagem que não é de máquina, mas que
também não é legível pelos seres humanos. Essa linguagem é chamada de bytecode e não é
dependente de nenhuma plataforma de hardware ou de software.

6
ANTES DE COMEÇAR

Como funciona o Java


Os programas Java são executados
em uma Máquina Virtual Java (JVM).
Isso fornece independência de
plataforma, permitindo que o código
Java seja executado em qualquer
dispositivo que tenha uma JVM.

7
ANTES DE COMEÇAR

Características do Java
● Orientada a Objetos;
● Fortemente Tipada;
● Sintaxe baseada no C++, mas com influências de
outras linguagens.

8
ANTES DE COMEÇAR

JVM? JRE? JDK? O que devo baixar?


● JVM: Apenas a Máquina Virtual. Esse download não existe, pois
ela sempre vem acompanhada.
● JRE: Java Runtime Environment. Ambiente de execução Java,
formado pela JVM e bibliotecas, tudo o que você precisa para
executar uma aplicação Java. Mas precisamos de mais.
● JDK: Java Development Kit. Nós, desenvolvedores, faremos o
download do JDK do Java SE (Standard Edition). Ele é formado
pela JRE somada às ferramentas como o compilador.

9
MOTIVAÇÃO

Mas, por que aprender POO?


● Mais fácil para modelar problemas reais;
● Reutilização de código;
● Melhor organização do código;
● Manutenção do código.

10
Programação orientada a objetos

Encapsulamento
Polimorfismo
Herança

Abstração

11
PROCESSO DE ABSTRAÇÃO E REPRESENTAÇÃO

Modelando o mundo real

Identidade: O que é?

Propriedades: Quais as características?

Comportamentos: Quais ações sofre ou executa?

12
PROCESSOS DE ABSTRAÇÃO E REPRESENTAÇÃO

Modelando o mundo real

Identidade: Gato.

Propriedades: Cor do pêlo, cor dos olhos e peso.

Comportamentos: Miar e rosnar.

13
PROCESSOS DE ABSTRAÇÃO E REPRESENTAÇÃO

Modelando o mundo real

14
PROCESSOS DE ABSTRAÇÃO E REPRESENTAÇÃO

Modelando o mundo real

Abstração: A abstração é um princípio-chave da POO que


permite representar objetos do mundo real no software,
focando nos aspectos essenciais e relevantes;
Representação: É a implementação concreta da abstração,
onde você define as classes, os atributos e os métodos que
representam os objetos e as interações entre eles.

15
Conceitos fundamentais
Classe: É o modelo para criar objetos.

Define comportamentos e atributos.

Todos os gatos seguem esse modelo.

16
Conceitos fundamentais
Objeto: Objetos são representações concretas

(instâncias) de uma classe.

Diferentes tipos de gatos, mas todos são gatos.

17
Conceitos fundamentais
Métodos: Representam o comportamento ou as
ações que um objeto pode executar.

Comer

Morder

Miar

18
public class Gato {

Gato private String nome;


private int idade;
private String cor;

- nome: String public Gato(String nome, int idade, String cor) {


- idade: int this.nome = nome;
this.idade = idade;
- cor: String
this.cor = cor;
}

public void miar() {


+ Gato(nome: String, idade: int, cor: String) System.out.println("O gato " + nome + " está miando.");
}
+ miar(): void
+ dormir(): void public void dormir() {
+ getNome(): String System.out.println("O gato " + nome + " está dormindo.");
+ setNome(nome: String): void }

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

19
Método construtor em Java
O método construtor é um bloco de código especial dentro de uma classe que é
chamado automaticamente quando um objeto da classe é criado. Ele tem o mesmo
nome da classe e é usado para inicializar os membros da classe ou realizar outras
tarefas de inicialização necessárias.

public class ExemploClasse {

private int valor;

public ExemploClasse(int inicial) {


this.valor = inicial;
}
}

20
Tipos em java
Os principais tipos são:
● int: Números inteiros.
● double: Números de ponto flutuante.
● char: Caracteres Unicode.
● boolean: Valores lógicos (verdadeiro ou falso).
● String: Sequência de caracteres.

21
Conceitos fundamentais
Herança: Na herança, uma nova classe, chamada classe
derivada ou subclasse, é criada a partir da classe base. A
subclasse herda todos os membros (atributos e métodos)
da classe base e pode adicionar novos membros ou
modificar os existentes.

22
Conceitos fundamentais: Herança

23
Conceitos fundamentais: Herança

24
Conceitos fundamentais: Herança

25
Dúvida comum
Uma classe em java pode herdar de mais de uma classe?

26
Conceitos fundamentais
Polimorfismo: O polimorfismo em POO refere-se à
capacidade de tratar objetos derivados de uma mesma
superclasse de maneira polimórfica e invocar métodos com
o mesmo nome, mas com comportamento diferente.

27
Conceitos fundamentais: Polimorfismo

28
Conceitos fundamentais: Polimorfismo

29
Conceitos fundamentais: Polimorfismo

30
Qual das afirmações está correta em relação ao polimorfismo e
a sobrescrita de métodos em Java?

o O polimorfismo permite alterar a quantidade de parâmetros de um método na


A sobrescrita de métodos.

O polimorfismo não permite alterar a quantidade de parâmetros de um método


B na sobrescrita de métodos.

A alteração da quantidade de parâmetros na sobrescrita de métodos depende


C da configuração do compilador Java.

31
Qual das afirmações está correta em relação ao polimorfismo e
a sobrescrita de métodos em Java?

o O polimorfismo permite alterar a quantidade de parâmetros de um método na


A sobrescrita de métodos.

O polimorfismo não permite alterar a quantidade de parâmetros de um método


B na sobrescrita de métodos.

A alteração da quantidade de parâmetros na sobrescrita de métodos depende


C da configuração do compilador Java.

32
Conceitos fundamentais
Encapsulamento: O encapsulamento em POO refere-se à
combinação de dados e comportamentos em uma classe,
controlando o acesso e a manipulação dos dados internos por meio
de métodos específicos.

Isso possibilita que modificações no sistema possam ser feitas


de maneira mais cirúrgicas, sem que uma funcionalidade esteja
espalhada por diversas partes do sistema.

33
Conceitos fundamentais
Ocultamento de informações em Java

+ Public
#
Protected
~-
Default Private

34
Conceitos fundamentais
Ocultamento de informações em Java

Modificador Classe Mesmo pacote Subclasse de Outro pacote


outro pacote

Public

Protected

Default

Private

35
Programação orientada a objetos

Encapsulamento
Polimorfismo
Herança

Abstração

36
Como analisar problemas para projetar soluções;

1. Entender o problema;
2. Identificar os objetos-chave;
3. Definir as classes;
4. Definir a hierarquia de classes
5. Estabelecer as relações.
6. Diagramar;
7. Codificar.

37
Ambientes de desenvolvimento
para linguagem Java.

38
Estrutura básicas em Java

39
Estruturas de controle em Java
IF e ELSE

40
Estruturas de controle em Java
Switch

41
Estruturas de
controle em Java
Switch

Em Java, switch é uma estrutura


de controle que permite avaliar
uma expressão e executar
blocos de código com base no
valor dessa expressão.

42
Estruturas de
controle em Java
Switch
Em Java, switch é uma estrutura
de controle que permite avaliar
uma expressão e executar
blocos de código com base no
valor dessa expressão.

43
Estruturas de repetição em Java
WHILE

44
Estruturas de repetição em Java
FOR

45
Controlando loops
Apesar de termos condições booleanas em nossos laços, em algum momento, podemos
decidir interromper o loop por algum motivo especial sem que o restante do laço seja
executado.

46
Controlando loops
Apesar de termos condições booleanas em nossos laços, em algum momento, podemos
decidir interromper o loop por algum motivo especial sem que o restante do laço seja
executado.

47
O método Main
O método main em Java é o ponto de entrada principal para a execução de um programa
Java. Ele é o método que o Java Virtual Machine (JVM) procura para iniciar a execução do
programa.

48
O método Main
public: Indica que o método é público e pode ser acessado por qualquer classe.
static: Indica que o método é estático, pertencendo à classe em vez de instâncias
específicas da classe. Isso é necessário para que a JVM possa chamar o método sem criar
uma instância da classe.
void: Indica que o método não retorna nenhum valor.
main: Este é o nome do método.
String[] args: É um parâmetro que permite passar argumentos da linha de comando para
o programa. args é um array de strings que contém os argumentos fornecidos quando o
programa é executado a partir da linha de comando.

49
Os métodos GET e SET
Em Java, os métodos Get e Set são usados para
acessar e modificar os atributos de uma classe.

50
Os métodos GET e SET

51
Os métodos GET e SET

52
Os métodos GET e SET

53
Métodos abstratos
● Métodos abstratos são métodos que são
declarados em uma classe, mas não fornecem
uma implementação.
● Em Java, você declara um método abstrato
usando a palavra-chave abstract.
● Esses métodos precisam ser implementados
pelas classes que herdam da classe que os
declara.

54
Métodos abstratos

55
Interfaces
Uma interface em Java nada mais é que uma classe
abstrata composta somente por métodos abstratos.
Não pode ser instanciada.

56
E para que serve uma interface?

57
Interfaces
Ela serve para que outras classes, baseadas nessa
interface, implementem esses métodos para fins
específicos.
Ela só contém as declarações dos métodos e
constantes, nenhuma implementação, só o 'molde'.

58
Interfaces
Desde o Java 8, você também pode
criar métodos padrão.

59
Interfaces
A interface ao lado contém dois
campos, dois métodos e um método
padrão.

60
Implementando uma interface
Sozinha, uma interface não tem uma finalidade específica, mas
geralmente é usada em conjunto com as Classes

61
Temos, porém, uma regra geral!

62
Regra para classes e interfaces
A classe deve implementar todos os métodos da
Interface. Os métodos devem ter exatamente a
mesma assinatura (nome, parâmetros e exceções)
descrita na interface.
No entanto, a classe não precisa declarar os
atributos, apenas os métodos.

63
Instâncias de uma interface
Ao criar uma Classe do Java, que implementa uma Interface, a
instância do objeto pode ser referenciada como uma instância da
interface.

64
Importante!
Uma interface não pode conter um método construtor.

65
Polimorfismo com interfaces
Você pode usar apenas interfaces para fazer referência a
instâncias de objeto!

66
Polimorfismo com interfaces
Você pode usar apenas interfaces para fazer referência a
instâncias de objeto!

67
Polimorfismo com interfaces
Você pode usar apenas interfaces para fazer referência a
instâncias de objeto!

68
Implementando várias interfaces
Embora na herança dentro das Classes você esteja restrito a
herdar apenas uma classe, com as interfaces, você pode herdar
várias.

69
Implementando várias interfaces
Embora na herança dentro das Classes você esteja restrito a
herdar apenas uma classe, com as interfaces, você pode herdar
várias.

70
Não se esqueça, porém, de implementar
todos os métodos de todas as interfaces
para não gerar um erro de compilação!

71
Métodos padrão das interfaces
● Java 8 fornece os métodos default (padrão)
para as interfaces.
● Um método default pode conter sua própria
implementação diretamente dentro da interface!
● Se uma classe não implementar um método
padrão, o compilador usará a implementação
mencionada na interface.

72
Métodos padrão das interfaces

73
Métodos padrão das interfaces

74
Métodos estáticos nas interfaces
● Os métodos estáticos nas interfaces são quase
idênticos aos métodos estáticos nas classes
concretas.
● A única e grande diferença está no fato de que
os métodos static não são herdados nas
classes que implementam a interface.

75
Métodos estáticos nas interfaces

76
Métodos estáticos nas interfaces

77
Classes Abstratas
● É um tipo de classe especial que não pode ser
instanciada, apenas herdada. Sendo assim, uma classe
abstrata não pode ter um objeto criado a partir de sua
instanciação.
● Essas classes são muito importantes quando não
queremos criar um objeto a partir de uma classe
“geral”, apenas de suas “subclasses”.

78
Classes Abstratas: Exemplo
Imagine que possuímos três classes (Conta, Conta Corrente e
Conta Poupança), sendo a classe Conta uma classe “geral”
(comumente chamada de classe “pai”).
Ao ir em um banco, nós não criamos uma nova Conta, mas sim
uma Conta Corrente ou uma Conta Poupança.

79
Classes Abstratas vs Interfaces
● Quando utilizamos as interfaces, estamos definindo um
conjunto de assinatura de métodos que outras classes
devem implementar. Com isso, apenas definimos o
comportamento base de um conjunto de classes que, por
ventura, implementam esta interface.

● Já as classes abstratas servem para prover uma base para


que as classes que “herdem” desta não precisem se
preocupar com o comportamento padrão, apenas com
suas características e comportamentos pessoais.

80
Classes Abstratas implementação

81
Classes Final
Uma classe final, é uma classe que não permite que
seja criada subclasses dela.

82
Pacotes em java
● Na linguagem Java existe uma maneira simples
e direta de se organizar arquivos, além de
possibilitar que se utilize mais de uma classe de
mesmo nome no mesmo projeto.
● Essa forma de organização recebe o nome de
empacotamento.
● No Java utilizamos a palavra package para
representar o pacote da classe.

83
Pacotes em java
Uma boa prática para nomes de pacotes é utilizar
apenas uma palavra como nome do pacote, por
exemplo, biblioteca, pessoa, email, e o nome do
pacote escrito em minúsculo.
O pacote não pode ter o nome de uma palavra-chave
do java e não pode começar com número ou
caracteres especiais (exceto $ e _).

84
Pacotes importantes do java
java.lang:
Contém classes fundamentais do Java, como Object, String,
Math, e outras classes básicas.
java.util:
Fornece classes e interfaces úteis para estruturas de dados,
como List, Set, Map, além de utilitários para manipulação de
datas, coleções, e outras classes auxiliares.
java.io:
Contém classes para entrada e saída de dados. Trata de
operações com arquivos, streams, e serialização.

85
Pacotes importantes do java
java.math:
Contém classes para manipulação de números grandes
e precisos, além de operações matemáticas avançadas.
java.net:
Oferece classes para comunicação em rede, como
sockets, URLs, e outras funcionalidades relacionadas à
rede.

86

Você também pode gostar