Migrando do PHP para JAVA for desktop

Olá gente, sou programador de PHP e senti a necessidade de uma linguagem mais articulada, que eu possa desenvolver softwares e sites.
No momento estou tentando fazer meu primeiro programa OOP e estou com duvidas com relação se a extrutura das classes esta correto… se o main esta legal ou tá puxando muito pra programaçao não-oop
preciso de dicas e tudo q vier :slight_smile:

o programa é simples… é o hello_db
eu criei a classe bd q tem o metodo para se conectar no banco de dados(porenquanto só tem esse) e com um extensao de classe TECLADO que irá trabalhar com o Stream para preenxer os campos da super classe

deem suas opinioes, sugestoes, criticas… plz… preciso aprender isso de verdade ! nao quero ser mais um q “tem um noçao” ou q “consegue programar”… eu to até lendo um livro escrito pelo criador do JAVA da série “Java da Source” antigao q eu redescobri… mas nao quero esperar o livro acabar para começar a treinar e nada melhor para treinar doque fazer um programa q te interessa… pra mim db interessa muito :slight_smile:

mas sem mais delongas… aki esta o código

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.io.*;

class hello_db 
{
	public static void main(String[] args) 
	{
		bd cigarro = new bd();
		cigarro.ler(host);
		cigarro.ler(user);
		cigarro.ler(pass);
		cigarro.ler(db);
		cigarro.conecta();
	}
}


class bd
{
	public String host = "host";
	public String user = "user";
	public String pass = "pass";
	public String db = "db";
	private String url;
	private String driver = "org.gjt.mm.mysql.Driver";
	private Connection connect;
	
	bd(){
		url = "jdbc:mysql://" + host + "/" + db + "?user=" + user + "&password=" + pass;
	}
	private Connection conecta(){
		try{
			connect = DriverManager.getConnection(url)
		}catch (Exception e){	
			System.out.println("Erro ao conectar no servidor :(");
			return;
		}
		System.out.println("Conectou ao banco !!!!!!!")
	}
	class teclado extends bd
	{
		BufferedReader br = new BufferedReader (new InputStreamReader(System.in)); 

		public String ler(String oque) {
			System.out.println (oque +" : "); 
			super.oque = br.readLine();
		}

	};
};

só complementando
eu queria uma simples revisao… me explicar se as classes estao escritas de forma correta e se estao logicas… se a logica q eu usei é logica de OOP… to com medo de estar escrevendo JAVA com a cabeça em PHP…

tá muito bom pra um começo…
mas tente seguir algo do tipo…

public 
class MinhaClasse
{

 public MinhaClasse()
 {
    System.out.println("olá mundo");
 }

 public static
 void    main(String args[])
 {
    new MinhaClasse();
    System.exit(0);
  }
}

outro exemplo pra vc dar uma olhada…

http://www.guj.com.br/forum/viewtopic.php?t=16052

boa sorte e bem vindo ao Mundo Java… :smiley:

Alguns livros realmente bons para J2SE

Java Como Programar - Deitel
Core Java Vol.2 Fundamentos
Core Java Vol.2 Avançado
JDBC 2: Guia de Consulta Rápida

:smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

Seu código nem vai compilar!

Bem… q ele nao vai compilar eu já imaginava… primeiro programa feito quase as cegas :lol:
O que eu vim buscar aqui é como essa minha ideia de programa ficaria escrita corretamente em JAVA
eu tenho q deixar todas as classes dentro da classe principal ?
essa parte do main poder ter em cada classe me complicou umpouco ainda mais pra quem tava começando a estudar C++ aonde só tinha um main. Qual é o “main” main() afinal ?
E extenção de classes ta correta e necessaria ?
porfavor… me ajudem a intender estas coisas q facilitariam muito o meu aprendizado

Primeiro, procure separar suas classes, cada uma num arquivo fonte, e cada arquivo com o mesmo nome da clase + “.java”.

Sua classe que contém o Main, deve ser pública.

É legal ter um livro e ter um colega para perguntar. Por incrível que pareça, programação e redação são coisas muito parecidas - ajuda bastante ler coisas escritas pelos outros, e ajuda bastante ter alguém que lhe ajude. Não é todo mundo que consegue aprender tudo sozinho. (Se fosse assim, pra que haveria este fórum?)

Bom, para quem está começando, é legal organizar as coisas da seguinte maneira: para cada classe, crie um arquivo separado com o nome da classe + “.java”. (A regra na verdade é um pouco mais complicada, mas para facilitar é legal deixar cada classe separadinha).

Isso que é o legal do java, na verdade você que decide na hora de rodar o programa. Você pode reservar o “main” de uma classe que só é usada por outras classes para fazer uma rotina de teste.

[quote=“Need_Weed”]E extensão de classes tá correta e necessaria ?
por favor… me ajudem a entender estas coisas que facilitariam muito o meu aprendizado[/quote]
Outra coisa que depende do que você quer fazer. Isso na verdade aprende-se com a prática…
Ainda bem que o computador (compilador) aceita um monte de coisas e não é resmungão igual ao seu professor de redação.
Escreva bastante código, leia alguns livros, pergunte aos seus colegas, e principalmente teste o que você escreveu. De repente você descobre até um jeito melhor de fazer as coisas…

Gente… eu fiz umas alteraçoes no código… tirei classes desnecessárias porenquanto… e baseado em estruturas de outros códigos da web, que me pareceram mais simples doque as do livro, fiz uma coisa um tanto diferente mas prezervando o main com apenas uma alteraçao.
Eu pretendo trabalhar todo meu aprendizado de java nesse projeto… a cada aprendizado uma incrementacao no programa… acho mais util deixar esse metodo para ser requisitado posteriormente como porexemplo quando eu poder fazer a versao q muda de banco de dados ou simplesmente para quando eu fizer a versao que desconecta e pode conectar denovo

bem… sem mais delongas…

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.io.*;

class hello_db 
{
		
		public String host = "host";
		public String user = "user";
		public String pass = "pass";
		public String db = "db";
		private String url;
		private String driver = "org.gjt.mm.mysql.Driver";
		private Connection connect;
		
		hello_db(){
			public String host = "host";
			public String user = "user";
			public String pass = "pass";
			public String db = "db";
			private String url;
			private String driver = "org.gjt.mm.mysql.Driver";
			private Connection connect;
		}
		private Connection conecta(hello_db objeto){
			objeto.url = "jdbc:mysql://" + objeto.host + "/" + objeto.db + "?user=" + objeto.user + "&password=" + objeto.pass;
			try{
				connect = DriverManager.getConnection(url)
			}catch (Exception e){	
				System.out.println("Erro ao conectar no servidor :(");
				return;
			}
			System.out.println("Conectou ao banco !!!!!!!")
		}
		
			BufferedReader kinput = new BufferedReader (new InputStreamReader(System.in)); 

			public String ler(String oque) {
				System.out.println (oque +" : "); 
				super.oque = kinput.readLine();
				return oque;

		};
	};
	public static void main(String[] args) 
	{
		hello_db cigarro = new hello_db();
		System.out.println("Olá, Bem Vindo ao Hello_DB. Vamos ver qual vai ser o problema que vai dar agora");
		cigarro.ler(host);
		cigarro.ler(user);
		cigarro.ler(pass);
		cigarro.ler(db);
		cigarro.conecta(this);
	}
}

Agora deem suas opinioes e sugestoes

tá começando a melhorar…

tipo o metodo main() ele é statico sempre estara na memoria, normalmente ele executa o metodo construtor,
que é definido com o mesmo nome da classe tipo…

class x
{

public x()
{
System.out.println("mais uma vez eu tentando..");
}

public static
void main(String args[])
{
// aqui ele executa o metodo construtor..
new x();
System.exit(0);
}

e o nome do arquivo seria x.java

part 1/2

um codigo um pouquinho mais complicado tente intender…

class y
{

public y()
{
  String texto = "tentando mais uma vez";
  escreva(texto); 
}

public
void escreva(String a_texto)
{
 System.out.println(a_texto);
}

public static
void main(String args[])
{
 new y();
 System.exit(0);
}

}

valeu ?

part 2/2

po fiel… isso nao é complicado nao :slight_smile:
eu to procurando sources de exemplos de programas… inclusive usando swing… e to conseguindo intender quase tudo… a criação de objetos e extenções de classes… consigo ler e intender mas ainda nao estou com mobilidade para escrever tudo ainda… e fudeu tudo hj aqui quando eu fui instalar o jdk… erro na instalacao :confused: ainda bem q em breve estarei de micro novo… com muito mais ram e vou poder botar o XP ou 2000 pro e ter um desempenho melhor com um sistema com menos erros(ao menos os cds do 98 q eu tenho sao uma merda)

Bem… agora é hora de ir na livraria e procurar um livro novo heheheheheh
ainda falta aprender threads e muitas outras coisas que com exemplos puro e simplesmente nao resolve

http://javalee.sf.net

Baixa os fontes e olha.

Lá eu usei alguma (pouca) separação de camadas, Swing e JDBC.
Além de Properties e XML.

um bom livro é o…

Java Como Programar - Deitel & Deitel

muito bom!

ai já aproveita e compra o guia rapido de mao JDBC muito bom também!

esse é um otimo começo em Swing… :wink:

Uma dica, como vc disse que está começando a programar em Java e não tem muito conhecimento de OOP, bem, que tal comprar um livro que trade desse assunto ?

Não sei a quantas anda seu inglês, mas um bom título seria esse: fundamentals of oop and data structures in java.

Em português, bem, não conheço quase nada, mas já ouvi falar bem do Introdução a Programação orientada a objetos usando Java.

Depois que seus conceitos em OOP estiverem a flor da pele, aí sim pode partir para a criação de programas.

Estou dando essa dica pq vc disse que quer realmente aprender Java, e, sinceramente, uma coisa (OOP) está diretamente ligada a outra (Java).

[]'s
Julio