Príncipio de Orientação a Objetos

Oi!
Estou aqui estudando um programa de Orientação a Objetos.
Alguem poderia me explicar como está funcionando ?

Vejamos o código:

Classe Principal

//Principal.java
public class Principal {
	
	//inicia programa Java
	public static void main(String args[])
	{		
		Conta minhaConta1 = new Conta(); //cria minhaConta para acessar a classe Conta
		Cliente c = new Cliente();
		minhaConta1.titular = c;
		
		minhaConta1.titular.nome = ("Gustavo");
		minhaConta1.titular.sobreNome = ("Silva");
		minhaConta1.titular.cpf = ("000.000.000-00");
			
	}
	
}

Classe Conta

//Orientação a Objetos
//Conta.java
import java.util.Scanner; //importa a classe Scanner
public class Conta {
	
	int numero; //número da conta
	String cliente; //dono da conta
	int saldo; //saldo da conta
	double limite; //limite da conta
	Cliente titular;
	Scanner input = new Scanner(System.in); //importa a classe Scanner	
	//método para retornar o nome do cliente
	String clienteRetorna()
	{
		
		return cliente;
		
	}
	
	//método para sacar o dinheiro
	void Saca(int quantidade)
	{
		int novoSaldo = this.saldo - quantidade; //retira o saldo
		this.saldo = novoSaldo; //adciona a nova quantia (retirada) a novoSaldo
		
	}
	//método para depositar dinheiro na conta
	void Depositar(double quantidade)
	{
		this.saldo += quantidade;
	}
	
	//retorna o novo saldo
	int novoSaldo()
	{
		return this.saldo;
	}
}

Classe Cliente

public class Cliente {
	
	String nome;
	String sobreNome;
	String cpf;
		

}

Poderia me explicar como funciona a Orientação a Objetos nesse caso ?
Obrigado.

O código está todo comentado. Qual é a sua dúvida exatamente?

Desculpe se parecer groso, mas…

Tu ta cadastrado no site desde 2009, fez 144 posts nesse tempo, e não sabe como funciona este simples código?

Estranho não?

Olá André!

Cliente c = new Cliente();  
        minhaConta1.titular = c;  
          
        minhaConta1.titular.nome = ("Gustavo");  
        minhaConta1.titular.sobreNome = ("Silva");  
        minhaConta1.titular.cpf = ("000.000.000-00");  

E aqui:

 Cliente titular;  

Poderia me explicar, só estou com dúvidas apenas nesses códigos. E como essas classes se comunicam ?
No mais, estou com dificuldade para entender apenas como as classes se comunicam entre si.
Visto que é um princípio básico de Orientação a Objetos.
Obrigado!

Amigo qualquer explicação a sua dúvida poderá gerar mais dúvidas ou ainda ser pior para seu aprendizado, aconselho você fortmente a leitura de FJ11 - Java e orientação a objetos.

Olá!
Eu estou lendo justamente essa apostila. Apenas não entendi o como se comunica entre as classes. Apenas isso.
É tão difícil explicar ?

Lembra o modo como vc cria uma String?

String palavra = new String();

Com a classe cliente é mesma coisa… ele cria dentro da Conta um Cliente.

Cliente titular = new Cliente();

O que isso significa? Significa que ele não vai ter Conta sem ter o Cliente. Obrigatoriamente sempre que criar uma conta deve passar uma classe cliente com todos os dados da classe preenchidos. Essa é uma relação de dependência que provavelmente vc deve estar lendo no livro… Existem várias formas de relacão entre classes. Continue lendo o livro que vai entender.

Olá!
Obrigado!
Estou consiguindo compreender.
Cria String, você diz, importar a classe Scanner ?

 import java.util.Scanner;

Agora cria chama Scanner para que assim, eu possa obter dados a partir da janela de comando ?

Scanner input = new Scanner(System.in)

Como é feito a criação do Scanner para eu obter dados. Segui o mesmo padrão de Cliente e Cadastro ?
Para ter acesso a Cliente, eu fiz isso:

 Conta minhaConta1 = new Conta();   

A variável (minhaConta1) é uma variavel para buscar os métodos dentro da classe Conta. Como por exemplo:

minhaConta1.Saca(); //isso chama o método

Conforme estudando, eu apenas estava trabalhando apenas com 2 (duas) classes Java. Agora, veio para eu trabalhar com várias classes, assim sendo, Orientação a Objetos.

Então, foi feito a chamada para cliente também:

Cliente c = new Cliente();

Explicando novamente: © variável para buscar métodos dentro da classe Cliente.

Agora:

minhaConta1.titular = c; 

Eu atribui a variavel titular para a variavel c, para que buscar as variaveis locais dentro de Cliente, isto é: nome,sobrenomecpf. Correto ? Estou entendendo ?

Mas, uma dúvida, porque ele fez isso?

Cliente titular; 

Obrigado!

foi o que eu disse…
ele criou uma variável Cliente dentro da conta

la no método main ele criou uma conta e um cliente e atribuiu a conta ao cliente pois nao faria sentido ter uma conta sem cliente

imagine uma fabrica sem funcionários?
a fabrica não funciona… ela pode existir mas nao funciona
o que são funcionarios sem a fabrica? tb não funciona

do mesmo modo ali em cima… se ele não coloca aquela variável na classe Conta, vc poderia ter qtas contas quisesse e quantos clientes quisessem e nenhum ia ter ligação direta com o outro

mas como aquela variavel está ali pra isso… pra relacionar a classe Cliente que vc criou na conta que vc criou… dae ele usa o cliente pra acessar a conta… se apagar o cliente, a conta fica inutil ( pq a variavel vai ficar null )

entendeu agora?