[quote=pcalcado]
Aí que você se engana. Não sei se você percebeu (posso indicar alguns livros sobre OO que tratam do tema para esclarecimentos posteriores) mas get/set (getters e setters, acessores e mutatores, whatever) não garante encapsulamento e por isso seu exemplo não necessariamente está encapsulado. Smalltalk não têm get/set, teria Smalltalk encapsulamento?
Leia isso:
http://blog.fragmental.com.br/2006/03/04/fowler-e-getters/[/quote]
O Jovem… eu já disse, só usei o nome get/set para ficar mais fácil na hora de escrever. Mas se você prefere, segue codigo modificado:
[code]class A {
int varA = 0;
int joao() {
return varA;
}
int maria(int varA) {
this.varA = varA;
}
}
class B extends A {
int joao() {
return varA + 1;
}
int joao(int i) {
return varA + i;
}
} [/code]
Agora você consegue perceber os conceitos de OO?! Agora você poderia implementar para mim este código em C?!
[quote=pcalcado]Acho que você tem uns problemas conceituais aí. Vamos bem devagar para que entendas:
1 - Linguagens de Script são linguagens de programação, JavaScript é uma linguagem de programação. Ruby também. PERl também. PHP também.
2 - JavaScript possui OO baseada em protótipos, não em classes. Classes não são necessárias para ter OO: http://www.google.com/search?q=javascript+prototype+oop Essa diferença que você não está entendendo e por não entendê-la você está achando estes ‘problemas’ de herança em JavaScript. Herança com protótipos é feita copiando um objeto-pai. Quando você tem tipagem dinâmica isso é altamente equivalente à herança em tipagem estática como você está acostumado em Java.[/quote]
1- Com relação ao JavaScript ser uma linguagem de programação ou não, mais ainda do que o paradigma de OO, isto é uma questão de ponto de vista. Não vou discordar de você que JavaScript é uma linguagem de programação.
2- Em momento nenhum eu disse que acho que JavaScript é orientado a objetos. Aliás, não acho! Eu disse que ele não implementa todas as características de OO.
[quote=pcalcado]Deixa eu adivinhar: você não conhece PERL nem Ruby. Acertei?
Hashes nestas linguagens são conceitos implícitos na sintaxe da linguagem. Algo assim:
a = {'chave1' => 'valor', 'chave2'=> 'valor2'}
Em java não são implícitos na sintaxe da linguagem. Eu não tenho hashes em Java então? Tenho. O código acima em Java poderia ser:
Map a = new hashMap();
a.put("chave1", "valor1");
a.put("chave2", "valor2");
Note que não existe o conceito de hash na sintaxe da linguagem mas eu crio o conceito de hash utilizando uma classe. Da mesma maneira quando uma linguagem não possui o conceito de classe em sua sintaxe eu posso emulá-lo de outra forma. java tem objetos que representam hashes e C pode ter funções e estruturas que representam objetos.[/quote]
Volto a perguntar:
O que hash tem a ver com a história?! =/
E tem três mensagens que você está dizendo que é OO sem justificar. Como já disse (tem três mensagens), o fato de conseguir montar uma estrutura em uma linguagem que forneça um resultado semelhante ao de uma linguagem realmente OO, para mim (e por isto é uma questão de ponto de vista), não quer dizer que você está desenvolvendo OO. É um gato! OU se você preferir, POG.
Volto a pedir, implemente o código besta que eu escrevi acima usando C ou Pascal. Se tem todo este esquema de estruturas e tudo que você falou antes, então quer dizer há como implementar o código.
Claro. É bem mais fácil implementar uma linguagem totalmente nova do que extender uma antiga!
Este é o seu ponto de vista! =]