Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


k19 - k11 - orientação - a-objetos - em - java, Notas de estudo de Engenharia de Manutenção

Apostila K19 orientação a objetos

Tipologia: Notas de estudo

2015

Compartilhado em 01/04/2015

plinio-de-macedo-correa-5
plinio-de-macedo-correa-5 🇧🇷

4.7

(3)

2 documentos

1 / 220

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
TREINAMENTOS
Orientação a Objetos
em Java
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe k19 - k11 - orientação - a-objetos - em - java e outras Notas de estudo em PDF para Engenharia de Manutenção, somente na Docsity!

TREINAMENTOS

Orientação a Objetos

em Java

 - 13 de fevereiro de 
  • Sobre a K19 Sumário i
  • Seguro Treinamento
  • Termo de Uso
  • Cursos
  • 1 Introdução
    • 1.1 Objetivo
    • 1.2 Orientação a Objetos
    • 1.3 Plataforma Java
    • 1.4 Plataforma Java VS Orientação a Objetos
  • 2 Lógica
    • 2.1 O que é um Programa?
    • 2.2 Linguagem de Máquina
    • 2.3 Linguagem de Programação
    • 2.4 Compilador
    • 2.5 Máquinas Virtuais
    • 2.6 Exemplo de programa Java
    • 2.7 Método Main - Ponto de Entrada
    • 2.8 Exercícios de Fixação
    • 2.9 Variáveis
    • 2.10 Operadores
    • 2.11 IF-ELSE
    • 2.12 WHILE
    • 2.13 FOR
    • 2.14 Exercícios de Fixação
    • 2.15 Exercícios Complementares
  • 3 Orientação a Objetos
    • 3.1 Domínio e Aplicação SUMÁRIO ii
    • 3.2 Objetos, Atributos e Métodos
    • 3.3 Classes
    • 3.4 Referências
    • 3.5 Manipulando Atributos
    • 3.6 Valores Padrão
    • 3.7 Exercícios de Fixação
    • 3.8 Exercícios Complementares
    • 3.9 Relacionamentos: Associação, Agregação e Composição
    • 3.10 Exercícios de Fixação
    • 3.11 Exercícios Complementares
    • 3.12 Métodos
    • 3.13 Exercícios de Fixação
    • 3.14 Exercícios Complementares
    • 3.15 Sobrecarga (Overloading)
    • 3.16 Exercícios de Fixação
    • 3.17 Construtores
    • 3.18 Exercícios de Fixação
    • 3.19 Referências como parâmetro
    • 3.20 Exercícios de Fixação
    • 3.21 Exercícios Complementares
  • 4 Arrays
    • 4.1 Criando um array
    • 4.2 Modificando o conteúdo de um array
    • 4.3 Acessando o conteúdo de um array
    • 4.4 Percorrendo um Array
    • 4.5 foreach
    • 4.6 Operações
    • 4.7 Exercícios de Fixação
    • 4.8 Exercícios Complementares
  • 5 Eclipse
    • 5.1 workspace
    • 5.2 welcome
    • 5.3 perspectives
    • 5.4 views
    • 5.5 Criando um projeto java
    • 5.6 Criando uma classe
    • 5.7 Gerando o método main
    • 5.8 Executando uma classe
    • 5.9 Corrigindo erros
    • 5.10 Atalhos Úteis
    • 5.11 Save Actions
    • 5.12 Refatoração
  • 6 Atributos e Métodos de Classe
    • 6.1 Atributos Estáticos
    • 6.2 Métodos Estáticos
    • 6.3 Exercícios de Fixação
    • 6.4 Exercícios Complementares iii SUMÁRIO
  • 7 Encapsulamento
    • 7.1 Atributos Privados
    • 7.2 Métodos Privados
    • 7.3 Métodos Públicos
    • 7.4 Implementação e Interface de Uso
    • 7.5 Por quê encapsular?
    • 7.6 Celular - Escondendo a complexidade
    • 7.7 Carro - Evitando efeitos colateiras
    • 7.8 Máquinas de Porcarias - Aumentando o controle
    • 7.9 Acessando ou modificando atributos
    • 7.10 Getters e Setters
    • 7.11 Exercícios de Fixação
    • 7.12 Exercícios Complementares
  • 8 Herança
    • 8.1 Reutilização de Código
    • 8.2 Uma classe para todos os serviços
    • 8.3 Uma classe para cada serviço
    • 8.4 Uma classe genérica e várias específicas
    • 8.5 Preço Fixo
    • 8.6 Reescrita de Método
    • 8.7 Fixo + Específico
    • 8.8 Construtores e Herança
    • 8.9 Exercícios de Fixação
    • 8.10 Exercícios Complementares
  • 9 Polimorfismo
    • 9.1 Controle de Ponto
    • 9.2 Modelagem dos funcionários
    • 9.3 É UM (extends)
    • 9.4 Melhorando o controle de ponto
    • 9.5 Exercícios de Fixação
    • 9.6 Exercícios Complementares
  • 10 Classes Abstratas
    • 10.1 Classes Abstratas
    • 10.2 Métodos Abstratos
    • 10.3 Exercícios de Fixação
    • 10.4 Exercícios Complementares
  • 11 Interfaces
    • 11.1 Padronização
    • 11.2 Contratos
    • 11.3 Exemplo
    • 11.4 Polimorfismo
    • 11.5 Interface e Herança
    • 11.6 Exercícios de Fixação
  • 12 Pacotes SUMÁRIO iv
    • 12.1 Organização
    • 12.2 O comando package
    • 12.3 sub-pacotes
    • 12.4 Unqualified Name vs Fully Qualified Name
    • 12.5 Classes ou Interfaces públicas
    • 12.6 Import
    • 12.7 Conflito de nomes
    • 12.8 Níveis de visibilidade
    • 12.9 Exercícios de Fixação
  • 13 Documentação
    • 13.1 A ferramenta javadoc
    • 13.2 Exercícios de Fixação
  • 14 Exceptions
    • 14.1 Errors vs Exceptions
    • 14.2 Checked e Unchecked
    • 14.3 Lançando uma unchecked exception
    • 14.4 Lançando uma checked exception
    • 14.5 Capturando exceptions
    • 14.6 Exercícios de Fixação
  • 15 Object
    • 15.1 Polimorfismo
    • 15.2 O método toString()
    • 15.3 O método equals()
    • 15.4 Exercícios de Fixação
  • 16 String
    • 16.1 Pool de Strings
    • 16.2 Imutabilidade
    • 16.3 Métodos principais
    • 16.4 Exercícios de Fixação
  • 17 Entrada e Saída
    • 17.1 Byte a Byte
    • 17.2 Scanner
    • 17.3 PrintStream
    • 17.4 Exercícios de Fixação
    • 17.5 Exercícios Complementares
  • 18 Collections
    • 18.1 Listas
    • 18.2 Exercícios de Fixação
    • 18.3 Conjuntos
    • 18.4 Coleções
    • 18.5 Exercícios de Fixação
    • 18.6 Laço foreach
    • 18.7 Generics
    • 18.8 Exercícios de Fixação v SUMÁRIO
  • A Swing
    • A.1 Componentes
    • A.2 Layout Manager
    • A.3 Events, Listeners e Sources
    • A.4 Exercícios de Fixação
  • B Empacotamento
    • B.1 Empacotando uma biblioteca
    • B.2 Empacotando uma applicação
    • B.3 Exercícios de Fixação
  • C Threads
    • C.1 Definindo Tarefas - (Runnables)
    • C.2 Executando Tarefas
    • C.3 Exercícios de Fixação
    • C.4 Controlando a Execução das Tarefas
    • C.5 Exercícios de Fixação
  • D Socket
    • D.1 Socket
    • D.2 ServerSocket
    • D.3 Exercícios de Fixação
  • E Chat K19
    • E.1 Arquitetura do Sistema
    • E.2 Aplicação servidora
    • E.3 Aplicação cliente
    • E.4 Exercícios de Fixação
  • F Quizzes
  • G Respostas

SUMÁRIO vi

vi www.k19.com.br

SUMÁRIO 2

Seguro Treinamento

Na K19 o aluno faz o curso quantas vezes quiser!

Comprometida com o aprendizado e com a satisfação dos seus alunos, a K19 é a única que pos- sui o Seguro Treinamento. Ao contratar um curso, o aluno poderá refazê-lo quantas vezes desejar mediante a disponibilidade de vagas e pagamento da franquia do Seguro Treinamento.

As vagas não preenchidas até um dia antes do início de uma turma da K19 serão destinadas ao alunos que desejam utilizar o Seguro Treinamento. O valor da franquia para utilizar o Seguro Treina- mento é 10% do valor total do curso.

2 www.k19.com.br

3 SUMÁRIO

Termo de Uso

Termo de Uso

Todo o conteúdo desta apostila é propriedade da K19 Treinamentos. A apostila pode ser utilizada livremente para estudo pessoal. Além disso, este material didático pode ser utilizado como material de apoio em cursos de ensino superior desde que a instituição correspondente seja reconhecida pelo MEC (Ministério da Educação) e que a K19 seja citada explicitamente como proprietária do material.

É proibida qualquer utilização desse material que não se enquadre nas condições acima sem o prévio consentimento formal, por escrito, da K19 Treinamentos. O uso indevido está sujeito às medidas legais cabíveis.

www.facebook.com/k19treinamentos 3

INTRODUÇÃO

C

A P Í T U L O 1

Objetivo

O objetivo fundamental dos treinamentos da K19 é transmitir os conhecimentos necessários para que os seus alunos possam atuar no mercado de trabalho na área de desenvolvimento de software.

As plataformas Java e .NET são as mais utilizadas no desenvolvimento de software. Para utilizar os recursos oferecidos por essas plataformas de forma eficiente, é necessário possuir conhecimento sólido em orientação a objetos.

Orientação a Objetos

Um modelo de programação ou paradigma de programação é um conjunto de princípios, ideias, conceitos e abstrações utilizado para o desenvolvimento de uma aplicação.

KB 0-X8POKET 801MADE BY K

Analogia

Para entender melhor o que são os modelos de programação, podemos compará-los com padrões arquiteturais utilizados por diferentes povos para construção de casas. As características ambientais definem quais técnicas devem ser adotadas para a construção das moradias. Analogamente, devemos escolher o modelo de programação mais adequado às ne- cessidades da aplicação que queremos desenvolver.

CABANA DE ÍNDIO IGLU CASA OCIDENTAL

Figura 1.1: Moradias

O modelo de programação mais adotado no desenvolvimento de sistemas corporativos é o mo- delo orientado a objetos. Esse modelo é utilizado com o intuito de obter alguns benefícios específi- cos. Normalmente, o principal benefício desejado é facilitar a manutenção das aplicações.

www.facebook.com/k19treinamentos 1

INTRODUÇÃO 2

Em geral, os conceitos do modelo de programação orientado a objetos diminuem a complexi- dade do desenvolvimento de sistemas que possuem as seguintes características:

  • Sistemas com grande quantidade de funcionalidades desenvolvidos por uma equipe.
  • Sistemas que serão utilizados por um longo período de tempo e sofrerão alterações constantes.

Plataforma Java

A plataforma Java será objeto de estudo desse treinamento. Mas, devemos salientar que os con- ceitos de orientação a objetos que serão vistos poderão ser aplicados também na plataforma .NET.

No primeiro momento, os dois elementos mais importantes da plataforma Java são:

  • A linguagem de programação Java.
  • O ambiente de execução Java.

A linguagem de programação Java permite que os conceitos de orientação a objetos sejam utili- zados no desenvolvimento de uma aplicação.

O ambiente de execução Java permite que uma aplicação Java seja executada em sistemas ope- racionais diferentes.

PLATAFORMA JAVA

LINGUAGEM DE PROGRAMAÇÃO

ORIENTADA A OBJETOS

AMBIENTE DE EXECUÇÃO

MULTIPLATAFORMA

Figura 1.2: Plataforma Java

Plataforma Java VS Orientação a Objetos

Do ponto de vista do aprendizado, é interessante tentar definir o que é mais importante: a pla- taforma Java ou a orientação a objetos. Consideramos que a orientação a objetos é mais importante pois ela é aplicada em muitas outras plataformas.

2 www.k19.com.br

LÓGICA 4

Um arquivo contendo as instruções de um programa em Linguagem de Máquina é chamado de executável.

Linguagem de Programação

Como vimos anteriormente, escrever um programa em linguagem de máquina é totalmente in- viável para uma pessoa. Para resolver esse problema, surgiram as linguagens de programação , que tentam se aproximar das linguagens humanas. Confira um trecho de um código escrito com a lin- guagem de programação Java:

1 class OlaMundo { 2 public static void main ( String [] args ) { 3 System. out. println (" Olá Mundo "); 4 } 5 } Código Java 2.1: OlaMundo.java

Por enquanto você pode não entender muito do que está escrito, porém fica bem claro que um programa escrito dessa forma fica bem mais fácil de ser lido.

Um arquivo contendo as instruções de um programa em linguagem de programação é chamado de arquivo fonte.

Compilador

Por um lado, os computadores processam apenas instruções em linguagem de máquina. Por ou- tro lado, as pessoas definem as instruções em linguagem de programação. Dessa forma, é necessário traduzir o código escrito em linguagem de programação por uma pessoa para um código em lingua- gem de máquina para que um computador possa processar. Essa tradução é realizada por programas especiais chamados compiladores.

while(true){if(x < 1){ }return 0; }return 1;

while(true){if(x < 1){ }return 0; }return 1;

CÓDIGO FONTE PROCESSADOR NÃO EXECUTA

CÓDIGO FONTE COMPILADOR CÓDIGO DE MÁQUINA PROCESSADOR EXECUTA Figura 2.2: Processo de compilação e execução de um programa.

Máquinas Virtuais

4 www.k19.com.br

5 LÓGICA

Assim como as pessoas podem se comunicar através de línguas diferentes, os computadores po- dem se comunicar através de linguagens de máquina diferentes. A linguagem de máquina de um computador é definida pela arquitetura do processador desse computador. Há diversas arquitetu- ras diferentes (Intel, ARM, PowerPC, etc) e cada uma delas define uma linguagem de máquina dife- rente. Em outras palavras, um programa pode não executar em computadores com processadores de arquiteturas diferentes.

Os computadores são controlados por um sistema operacional que oferece diversas bibliotecas necessárias para o desenvolvimento das aplicações que podem ser executadas através dele. Sistemas operacionais diferentes (Windows, Linux, Mac OS X, etc) possuem bibliotecas diferentes. Em outras palavras, um programa pode não executar em computadores com sistemas operacionais diferentes.

Portanto, para determinar se um código em linguagem de máquina pode ou não ser executada por um computador, devemos considerar a arquitetura do processador e o sistema operacional desse computador.

Algumas bibliotecas específicas de sistema operacional são chamadas diretamente pelas instru- ções em linguagem de programação. Dessa forma, geralmente, o código fonte está “amarrado” a uma plataforma (sistema operacional + arquitetura de processador).

PROGRAMA 1 PLATAFORMA 1 EXECUTA

PROGRAMA 2 PLATAFORMA 2 EXECUTA

PROGRAMA 2 PLATAFORMA 3 NÃO EXECUTA

Figura 2.3: Ilustração mostrando que cada plataforma necessita de um executável específico.

Uma empresa que deseja ter a sua aplicação disponível para diversos sistemas operacionais (Win- dows, Linux, Mac OS X, etc), e diversas arquiteturas de processador (Intel, ARM, PowerPC, etc), terá que desenvolver versões diferentes do código fonte para cada plataforma (sistema operacional + ar- quitetura de processador). Isso pode causar um impacto financeiro nessa empresa que inviabiliza o negócio.

www.facebook.com/k19treinamentos 5

7 LÓGICA

em um determinado momento da execução para traduzi-los para a linguagem de máquina do com- putador. A partir daí, esses trechos podem ser executados diretamente no processador sem passar pela máquina virtual. Essa análise da máquina virtual é realizada durante toda a execução.

Com essas otimizações que consideram várias informações geradas durante a execução, um pro- grama executado com máquina virtual pode até ser mais eficiente em alguns casos do que um pro- grama executado diretamente no sistema operacional.

Mais Sobre

Geralmente, as máquinas virtuais utilizam uma estratégia de compilação chamada

Just-in-time compilation (JIT). Nessa abordagem, o código de máquina pode ser

gerado diversas vezes durante o processamento de um programa com o intuito de melhorar a utilização dos recursos disponíveis em um determinado instante da execução.

Exemplo de programa Java

Vamos criar um simples programa para entendermos como funciona o processo de compilação e execução. Utilizaremos a linguagem Java, que é amplamente adotada nas empresas. Observe o código do exemplo de um programa escrito em Java que imprime uma mensagem na tela:

1 class OlaMundo { 2 public static void main ( String [] args ) { 3 System. out. println (" Olá Mundo "); 4 } 5 } Código Java 2.2: OlaMundo.java

O código fonte Java deve ser colocado em arquivos com a extensão .java. Agora, não é necessário entender todo o código do exemplo. Basta saber que toda aplicação Java precisa ter um método especial chamado main para executar.

O próximo passo é compilar o código fonte, para gerar um executável que possa ser processado pela máquina virtual do Java. O compilador padrão da plataforma Java ( javac ) pode ser utilizado para compilar esse arquivo. O compilador pode ser executado pelo terminal.

K19$ ls OlaMundo. java K19$ javac OlaMundo. java K19$ ls OlaMundo. class OlaMundo. java Terminal 2.1: Compilando

O código gerado pelo compilador Java é armazenado em arquivos com a extensão .class. No exemplo, o programa gerado pelo compilador é colocado em um arquivo chamado OlaMundo.class e ele pode ser executado através de um terminal.

K19$ ls OlaMundo. class OlaMundo. java K19$ java OlaMundo Olá Mundo

www.facebook.com/k19treinamentos 7

LÓGICA 8

Terminal 2.2: Executando

Importante

Antes de compilar e executar um programa escrito em Java, é necessário que você tenha instalado e configurado em seu computador o JDK (Java De- velopment Kit). Consulte o artigo da K19, http://www.k19.com.br/artigos/ instalando-o-jdk-java-development-kit/.

Mais Sobre

Quando uma aplicação ou biblioteca Java é composta por diversos arquivos .class , po-

demos “empacotá-los” em um único arquivo com a extensão .jar com o intuito de faci-

litar a distribuição da aplicação ou da biblioteca.

Método Main - Ponto de Entrada

Para um programa Java executar, é necessário definir um método especial para ser o ponto de entrada do programa, ou seja, para ser o primeiro método a ser chamado quando o programa for executado. O método main precisa ser public , static , void e receber um array de strings como argu- mento.

Algumas das possíveis variações da assinatura do método main:

1 static public void main ( String [] args ) 2 public static void main ( String [] args ) 3 public static void main ( String args []) 4 public static void main ( String [] parametros ) Código Java 2.3: Variações da Assinatura do Método Main

Os parâmetros do método main são passados pela linha de comando e podem ser manipulados dentro do programa. O código abaixo imprime cada parâmetro recebido em uma linha diferente.

1 class Programa { 2 public static void main ( String [] args ) { 3 for ( int i = 0; i < args. length ; i ++) { 4 System. out. println ( args [i ]) ; 5 } 6 } 7 } Código Java 2.4: Imprimindo os parâmetros da linha de comando

Os parâmetros devem ser passados imediatamente após o nome do programa. A execução do programa é mostrada na figura abaixo.

K19$ ls Programa. class Programa. java K19$ java Programa K19 Java Rafael Cosentino K

8 www.k19.com.br