Nesse artigo iremos comentar e resolver os exercícios propostos no capítulo 4, sobre Orientação a objetos básica da apostila FJ-11: Java e Orientação a Objetos, da Caelum.
Clique aqui para saber sobre a Caelum e sua apostila.
Enviar um café pro programador
Pode me ajudar a transformar cafeína em código?
Mostrando postagens com marcador Orientação a Objetos. Mostrar todas as postagens
Mostrando postagens com marcador Orientação a Objetos. Mostrar todas as postagens
Como comparar objetos - Classe abstrata Comparable e o método compareTo
No tutorial passado de nossa apostila de Java, falamos sobre as Interfaces em Java, que fazem uso de diversos conceitos de Orientação a Objetos que estamos estudando, como Polimorfismo e Classes e Métodos Abstratos.
Como de praxe, iremos ensinar mais uma lição de Java englobando diversos assuntos.
Hoje vamos aprender como comparar objetos (maior, menor, igual etc), e para isso faremos uso da classe abstrata Comparable e de seu método compareTo( ).
E para ver uma utilidade prática desses assuntos, vamos mostrar um exemplo através da ordenação de elementos de um Array.
Como de praxe, iremos ensinar mais uma lição de Java englobando diversos assuntos.
Hoje vamos aprender como comparar objetos (maior, menor, igual etc), e para isso faremos uso da classe abstrata Comparable e de seu método compareTo( ).
E para ver uma utilidade prática desses assuntos, vamos mostrar um exemplo através da ordenação de elementos de um Array.
Interface em Java (implements) - O que é, para que serve e como implementar
Iremos agora estudar um assunto muito importante em nossa apostila de Java, que irá usar principalmente, dentre outras coisas, os conceitos aprendemos sobre Classes e Métodos Abstratos, as interfaces.
Aprenderemos também uma importante palavra reservada do Java, o implements.
Aprenderemos também uma importante palavra reservada do Java, o implements.
Herança ou Composição: Qual o melhor?
Acabamos de estudar a Herança, que assim como a Composição, é uma forma de tratar a relação entre os objetos, como eles devem ser vistos e trabalhados.
Talvez agora, como iniciante em nossa apostila de Java, isso não seja motivo de muita preocupação para você, mas certamente no futuro será. E para melhor esclarecer isso, nossa apostila de Java irá falar mais sobre as vantagens e desvantagens de cada uma dessas técnicas.
Talvez agora, como iniciante em nossa apostila de Java, isso não seja motivo de muita preocupação para você, mas certamente no futuro será. E para melhor esclarecer isso, nossa apostila de Java irá falar mais sobre as vantagens e desvantagens de cada uma dessas técnicas.
Campo Minado em Java: código comentado
Vamos agora explicar, em detalhes, como fazer, entender e programar toda a lógica de um campo minado na linguagem de programação Java.
O código do jogo se encontra em nosso artigo passado de nosso curso online de Java:
Jogo: Campo Minado em Java
O código do jogo se encontra em nosso artigo passado de nosso curso online de Java:
Jogo: Campo Minado em Java
Jogo: Campo Minado em Java
Dando continuidade aos games que estamos fazendo, e ensinando a fazer, vamos agora mostrar como fazer e programar o famoso jogo Campo Minado em Java.
Se não acompanhou os outros jogos feitos em nosso curso de Java, veja:
Como fazer o Jogo da Velha em Java
Como fazer o jogo Batalha Naval em Java
Aqui mostraremos as classes e código do jogo, no próximo artigo vamos explicar em detalhes como programar o jogo:
Código comentado sobre a criação do Campo Minado em Java
Como jogar o nosso Campo Minado em Java
Existe um tabuleiro 8x8, onde estão localizadas 10 minas.
A cada rodada você irá fornecer o número da linha e da coluna (ou seja, números de 1 até 8).
A cada rodada você irá fornecer o número da linha e da coluna (ou seja, números de 1 até 8).
Caso exista uma mina naquele lugar, você perde o jogo.
Caso não exista uma mina naquela posição, será exibido número naquele local e números nos locais vizinhos aquele que você escolheu, exceto onde há minas.
Esses números informam quantos minas existem ao redor daquele local.
Por exemplo, se você escolhe um local e aparece o número '2' lá, é porque existem duas minas nas vizinhanças daquele local. Vale salientar que 'ao redor' e 'vizinhança' significam todos os blocos ao redor, incluindo na diagonais.
Objetivo: Deixar os 10 campos que possuem minas livres. Ou seja, onde você deduzir que existe mina, não marque, simplesmente deixe o '_' lá, pois quando existem 10 underlines você ganhará o jogo.
Código do jogo Campo Minado em Java
-->campoMinado.java
public class campoMinado { public static void main(String[] args) { Jogo jogo = new Jogo(); } }
-->Jogo.java
public class Jogo { private Tabuleiro board; boolean terminar = false; boolean ganhou = false; int[] jogada; int rodada=0; public Jogo(){ board = new Tabuleiro(); Jogar(board); jogada = new int[2]; } public void Jogar(Tabuleiro board){ do{ rodada++; System.out.println("Rodada "+rodada); board.exibe(); terminar = board.setPosicao(); if(!terminar){ board.abrirVizinhas(); terminar = board.ganhou(); } }while(!terminar); if(!board.ganhou()){ System.out.println("Havia uma mina ! Você perdeu!"); board.exibeMinas(); } else { System.out.println("Parabéns, você deixou os 8 campos de minas livres em "+rodada+" rodadas"); board.exibeMinas(); } } }
-->Tabuleiro.java
import java.util.Random; import java.util.Scanner; public class Tabuleiro { private int[][] minas; private char[][] tabuleiro; private int linha, coluna; Random random = new Random(); Scanner entrada = new Scanner(System.in); public Tabuleiro(){ minas = new int[10][10]; tabuleiro = new char[10][10]; iniciaMinas(); // coloca 0 em todas as posições do tabuleiro de minas sorteiaMinas(); //coloca, aleatoriamente, 10 minas no tabuleiro de minas preencheDicas();//preenche o tabuleiro de minas com o número de minas vizinhas iniciaTabuleiro();//inicia o tabuleiro de exibição com _ } public boolean ganhou(){ int count=0; for(int line = 1 ; line < 9 ; line++) for(int column = 1 ; column < 9 ; column++) if(tabuleiro[line][column]=='_') count++; if(count == 10) return true; else return false; } public void abrirVizinhas(){ for(int i=-1 ; i<2 ; i++) for(int j=-1 ; j<2 ; j++) if( (minas[linha+i][coluna+j] != -1) && (linha != 0 && linha != 9 && coluna != 0 && coluna != 9) ){ tabuleiro[linha+i][coluna+j]=Character.forDigit(minas[linha+i][coluna+j], 10); } } public int getPosicao(int linha, int coluna){ return minas[linha][coluna]; } public boolean setPosicao(){ do{ System.out.print("\nLinha: "); linha = entrada.nextInt(); System.out.print("Coluna: "); coluna = entrada.nextInt(); if( (tabuleiro[linha][coluna] != '_') && ((linha < 9 && linha > 0) && (coluna < 9 && coluna > 0))) System.out.println("Esse campo já está sendo exibido"); if( linha < 1 || linha > 8 || coluna < 1 || coluna > 8) System.out.println("Escolha números de 1 até 8"); }while((linha < 1 && linha > 8) && (coluna < 1 && coluna > 8) || (tabuleiro[linha][coluna] != '_') ); if(getPosicao(linha, coluna)== -1) return true; else return false; } public void exibe(){ System.out.println("\n Linhas"); for(int linha = 8 ; linha > 0 ; linha--){ System.out.print(" "+linha + " "); for(int coluna = 1 ; coluna < 9 ; coluna++){ System.out.print(" "+ tabuleiro[linha][coluna]); } System.out.println(); } System.out.println("\n 1 2 3 4 5 6 7 8"); System.out.println(" Colunas"); } public void preencheDicas(){ for(int line=1 ; line < 9 ; line++) for(int column=1 ; column < 9 ; column++){ for(int i=-1 ; i<=1 ; i++) for(int j=-1 ; j<=1 ; j++) if(minas[line][column] != -1) if(minas[line+i][column+j] == -1) minas[line][column]++; } } public void exibeMinas(){ for(int i=1 ; i < 9; i++) for(int j=1 ; j < 9 ; j++) if(minas[i][j] == -1) tabuleiro[i][j]='*'; exibe(); } public void iniciaTabuleiro(){ for(int i=1 ; i<minas.length ; i++) for(int j=1 ; j<minas.length ; j++) tabuleiro[i][j]= '_'; } public void iniciaMinas(){ for(int i=0 ; i<minas.length ; i++) for(int j=0 ; j<minas.length ; j++) minas[i][j]=0; } public void sorteiaMinas(){ boolean sorteado; int linha, coluna; for(int i=0 ; i<10 ; i++){ do{ linha = random.nextInt(8) + 1; coluna = random.nextInt(8) + 1; if(minas[linha][coluna] == -1) sorteado=true; else sorteado = false; }while(sorteado); minas[linha][coluna] = -1; } } }
Código comentado sobre como criar um Jogo da Velha em Java
No tutorial passado mostramos um print do Jogo da Velha em Java, modo texto e Humano x Humano, bem como o código de 6 classes necessárias para rodar o programa:
Jogo da Velha em Java
Agora vamos comentar, em detalhes, cada classe, método e idéia que usamos para criar o jogo.
Jogo da Velha em Java
Agora vamos comentar, em detalhes, cada classe, método e idéia que usamos para criar o jogo.
Jogo da Velha em Java
Após estudar Herança, Polimorfismo, Classes e Métodos Abstratos chegou a hora de colocarmos nossos conhecimentos em prática para fazer algo realmente útil e bacana:
um jogo da velha.
Essa é uma versão simples, para ser jogada com duas pessoas. Note que, em uma aplicação Java simples como esta, o resultado saiu por volta de 300 linhas de código.
Mas deixamos as classes e tudo pronto para que, em um próximo tutorial de Java, possamos adicionar o computador em dois modos: modo fácil e modo infalível.
Sim, existe uma estratégia que podemos adotar (ou o computador pode adotar) para nunca perder uma partida de jogo da velha:
http://pt.wikihow.com/Ganhar-no-Jogo-da-Velha
um jogo da velha.
Essa é uma versão simples, para ser jogada com duas pessoas. Note que, em uma aplicação Java simples como esta, o resultado saiu por volta de 300 linhas de código.
Mas deixamos as classes e tudo pronto para que, em um próximo tutorial de Java, possamos adicionar o computador em dois modos: modo fácil e modo infalível.
Sim, existe uma estratégia que podemos adotar (ou o computador pode adotar) para nunca perder uma partida de jogo da velha:
http://pt.wikihow.com/Ganhar-no-Jogo-da-Velha
Manipulando polimorficamente subclasses
Agora que você domina completamente os conceitos de herança, polimorfismo e abstração, vamos aos exemplos práticos - códigos em Java.
Vamos mostrar como é possível uma superclasse abstrata manipule suas subclasses concretas.
Descobrindo a classe de um objeto: instanceof
Nesse rápido, e útil, tutorial ensinaremos como descobrir a classe de um objeto através da keyword:
instanceof
instanceof
Importância do Polimorfismo e Abstração em softwares
O uso dessas duas idéias, ou técnicas, em Java é de vital importância no mundo dos softwares.
Usamos isso o tempo inteiro e nem notamos.
Como programador Java, você deverá ter uma boa capacidade de criatividade e abstração em seus aplicativos.
Vamos mostrar alguns exemplos da utilidade do polimorfismo na abstração em Java.
Usamos isso o tempo inteiro e nem notamos.
Como programador Java, você deverá ter uma boa capacidade de criatividade e abstração em seus aplicativos.
Vamos mostrar alguns exemplos da utilidade do polimorfismo na abstração em Java.
Vídeo-aulas sobre Polimorfismo e Classes Abstratas
O seguinte vídeo é da Universidade XTI, que publica de maneira gratuita seus vídeos e aulas no youtube.
Aqui eles darão aula sobre polimorfismo e classes abstratas artigo comentado em nosso tutoriais:
Orientação a Objetos em Java
Veja as aulas, tutoriais e artigos de Java sobre Orientação a Objetos do curso online e gratuito Java Progressivo:
Polimorfismo: Classes abstratas e Métodos abstratos

Nesse artigo vamos introduzir um conceito importante e bastante útil na orientação a objetos: a abstração.
Pode parecer estranho, ou no mínimo confuso, classificar e utilizar algo que se diz ser abstrato, mas veremos que esse tipo de idéia é bem interessante e bem mais realista que nossa noção antiga de classe e objeto.
Polimorfismo em Java: o que é, pra que serve, como e onde usar
Agora que aprendemos os conceitos mais importantes e vimos o uso da Herança em Java, vamos estudar outra características marcante da programação Java e, de uma maneira mais geral, da programação orientada a objetos: o polimorfismo.
Com o polimorfismo vamos ter um controle maior sobre as subclasses sem ter que nos preocupar especificamente com cada uma delas, pois cada uma terá autonomia para agir de uma meneira diferente.
Com o polimorfismo vamos ter um controle maior sobre as subclasses sem ter que nos preocupar especificamente com cada uma delas, pois cada uma terá autonomia para agir de uma meneira diferente.
A classe Object: o que é, uso e principais métodos
Agora que já sabemos o que é herança, como a herança se comporta em relação aos construtores, uso do @Override e vimos os modificadores de acesso private, public e protected, vamos apresentar uma classe de suma importância bem como alguns de seus métodos: a classe Object.
private, public e protected: Protegendo suas informações em Java
Já vimos a relação de membros e métodos definidos como public e private, bem como a relação deles com o restante da aplicação.
Sabemos que membros private não podem ser acessados fora da classe em que foram declarados.
Mas em relação as suas subclasses?
E se eu quiser esconder algum dado das subclasses?
Veremos nesse artigo, de nosso curso online de Java, como proteger membros de uma classe, limitar e controlar o acesso aos dados importantes.
Sabemos que membros private não podem ser acessados fora da classe em que foram declarados.
Mas em relação as suas subclasses?
E se eu quiser esconder algum dado das subclasses?
Veremos nesse artigo, de nosso curso online de Java, como proteger membros de uma classe, limitar e controlar o acesso aos dados importantes.
Vídeo-aula sobre Herança(extends) e Construtores da superclasse
O seguinte vídeo é da Universidade XTI, que publica de maneira gratuita seus vídeos e aulas no youtube.
São duas aulas sobre Herança, referente aos nossos tutoriais:
Herança de construtores e Override
Agora que você já sabe o que é herança, sua importância, quando usar e viu vários exemplos práticos do mundo real, vamos mostrar como fazer uma classe herdar as características de outra.
Nesse tutorial de Java ensinaremos também a relação dos construtores com as superclasses e subclasses, e como usar o tão importante @Override.
Nesse tutorial de Java ensinaremos também a relação dos construtores com as superclasses e subclasses, e como usar o tão importante @Override.
Herança em Java - o que é, para que serve, exemplos e quando usar
Chegamos em um ponto muito importante em nosso curso de Java no que se refere a Programação Orientada a Objetos.
Herança é uma das maiores características desse tipo tão importante e usado tipo de programação.
Através desse recurso, você irá criar classes de uma maneira bem mais rápida, eficiente e fácil de manter: baseando classes em outras.
Herança é uma das maiores características desse tipo tão importante e usado tipo de programação.
Através desse recurso, você irá criar classes de uma maneira bem mais rápida, eficiente e fácil de manter: baseando classes em outras.
Assinar:
Postagens (Atom)