Cara, desse jeito não irá funcionar mesmo. Você está pedindo para o PHP printar o objeto. Somente Strings podem ser exibidas. Então como o PHP saberá o que exibir.
Porém se você indicar que você quer exibir o atributo Código, aí funciona. Dessa forma:
<?php
class Produto
{
var $Codigo;
var $Descricao;
var $Quantidade;
var $Preco;
}
$produto = new Produto;
$produto->Codigo = 4001;
$produto->Descricao = 'Catedral 20 ano Ao Vivo';
echo $produto->Codigo;
?>
Porém a forma que eu coloquei acima vai contra todas as boas práticas da programação. A forma mais "correta" de se fazer o que eu fiz acima seria assim:
<?php
class Produto
{
private $Codigo;
private $Descricao;
private $Quantidade;
private $Preco;
function setCodigo($code) {
$this->Codigo = $code;
}
function getCodigo() {
return $this->Codigo;
}
}
$produto = new Produto;
$produto->setCodigo(4001);
echo $produto->getCodigo();
?>
Agora, se você quiser mesmo assim exibir o objeto, você pode criar um método que transforme seus atributos em um único String concatenado. Mais ou menos assim:
<?php
class Produto
{
private $Codigo;
private $Descricao;
private $Quantidade;
private $Preco;
function setCodigo($code) {
$this->Codigo = $code;
}
function getCodigo() {
return $this->Codigo;
}
function setDescricao($Desc) {
$this->Descricao = $Desc;
}
function getDrescrica() {
return $this->Descricao;
}
function toString() {
return $this->Codigo . $this->Descricao;
}
}
$produto = new Produto;
$produto->setCodigo(4001);
$produto->setDescricao("Teste");
echo $produto->toString();
?>
Cara, se quiser ir fundo na Orientação a objeto, eu não recomendaria o PHP. O PHP 5 é orientado a objeto, mas não tanto. Ele chama muito ainda para a programação estruturada. Eu escolheria uma linguagem como o Java, Python ou Ruby. O pessoal geralmente vai no Java. E também é só uma dica.
Bons estudos.