e que existem linguagens de programacao MAIS ADEQUADAS para utilizacao com um certo paradigma. Por exemplo, as linguagens C++ e Java foram criadas com recursos que tornam a programacao no paradigma orientado a objetos mais confortavel. Mas isso nao significa que nao se possa programar "orientado a objetos" com a linguagem C. O que vai acontecer e que teremos um "trabalhinho adicional", ja que C nao vem preparada para orientacao a objetos. Por sorte, este trabalhinho ja esta pronto, na figura da biblioteca GObject, utilizada pela biblioteca GTK.Vamos neste post, portanto, ver algumas caracteristicas bem basicas do paradigma de orientacao a objetos, fundamentais para que possamos entender como programar utilizando GTK.Mas atencao! O que vai ser apresentado aqui e um resumo basico, introdutorio, e principalmente, incompleto! Portanto, se voce e aluno de computacao, envolvido com as questoes de orientacao a objetos, nao deixe de ler alguma referencia oficial sobre o assunto. E depois volte aqui pra me ajudar a complementar o texto... :-)DIFERENCAS FUNDAMENTAIS ENTRE OS PARADIGMAS "PROCEDURAL" E "ORIENTADO A OBJETOS"No paradigma procedural, temos duas caracteristicas fundamentais:codigo e dados bem separados;o codigo atua sobre os dados;Por exemplo, um programa que faca o gerencimento de uma conta bancaria, no paradigma procedural, poderia ser representado pela seguinte figura:Para, por exemplo, verificar o saldo da conta de "beltrano", o codigo (funcao) "saldo" atua sobre os dados da conta de beltrano:No paradigma orientado a objetos, codigo e dados sao reunidos em entidades chamadas "objetos". Um objeto possui caracteristicas (dados, atributos) e tambem um comportamento (o objeto "faz" alguma coisa, ele responde a solicitacoes, e o seu codigo).Repetindo o exemplo acima, para verificar o saldo da conta de "beltrano", agora nos enviamos uma "mensagem" para o objeto "conta de beltrano", para que esse objeto nos diga qual e o saldo da conta. Ou seja, este objeto tem um dado (o valor do saldo), e um comportamento (o objeto sabe responder quando lhe perguntamos seu saldo). Uma analogia: o objeto "ser humano" tem um dado (seu nome), e um comportamento (sabe responder quando lhe perguntam o nome). Se eu mandar, para um objeto "ser humano" a mensagem "qual e o seu nome?", o objeto ser humano devolve o valor armazenado na variavel NOME... :-)Resumindo: o objeto e responsavel, ele mesmo, por verificar (e exibir) o saldo da conta.CLASSE: MODELO GENERICO DE UM OBJETOOs objetos sao criados a partir de um "modelo", que diz como o objeto sera (quais sao seus atributos, dados, e qual e seu comportamento, codigo). Por exemplo, podemos definir a classe "ser humano", e a partir desse modelo, criar efetivamente os objetos "Ana", "Bianca", "Claudia", etc...Eu comparo, mal-e-porcamente, uma classe a uma struct em C. Com a struct, temos dois momentos: o de definicao da struct, e o de efetivamente criar uma variavel a partir da struct. Assim, por exemplo,struct AGENDA{. char NOME[30];. char EMAIL[20];}... na verdade cria apenas um modelo de como sera a struct AGENDA. Mas nao ha efetivamente nada criado na memoria para guardar NOME e/ou EMAIL. Com a seguinte instrucao,struct AGENDA MinhaAgenda;... ai sim, criamos na memoria a variavel "MinhaAgenda",