Java só trabalha com progrmacao Orientada a Objetos?

isso quer dizer que se eu estou programando em java, eu estou utilizando Orientacao a Objetos???

Olá

Em princípio sim. Qualquer programa em Java é orientado a objetos. Mas na prática você poderia escrever um programa com uma única classe cheia de métodos do mesmo jeito que a gente programava de forma estruturada lá pelos idos dos anos 90.

[]s
Luca

Essa é a idéia, mas vc pode escrever um programa só no main(), vai ficar um lixo mas o teu código naum pode ser considerado OO, OO nada mais é do q a reutilização de código, se vc usou Delphi, programava em OO só q naum sabia (talvez) pois o Delphi faz tudo sozinho, em java vc é q tem q fazer essas coisas. Mas a princípio java só trabalho com OO :slight_smile:

Não, programar java não significa programar orientado a objetos.

Orientaçao a objetos é uma forma de programar onde voce cria as classes
e essas classes trabalham em conjunto para realizar a tarefa.

Você pode programar tudo em uma única classe e ai seu programa
vai ser procedural sem orientaçao alguma.

Vai ficar horrível mas funciona, em alguns casos.

Olá

Eu ainda acho que é um pouco radical responder não porque toda a API Java é orientada a objetos. Mesmo que a gente escreva uma porcaria de programa macarrônico de uma classe só ele ainda de alguma forma será orientado a objetos (não sei porque lembrei do thinlet).

Mas aqui no GUJ a gente vem sempre discutindo questões relativas a boas práticas e tentando divulgar dicas coletadas em bons livros. A maioria das aplicações OO quase sempre tem trechos de códigos que descambam para código estruturado. Mas as vantagens da OO são enormes pois permitem abordar problemas que antes eram praticamente impossíveis de serem abstraídos. Falo por experiência própria porque desde 1969 quando escrevi meu primeiro programa já passei por todas as metodologias.

[]s
Luca

Concordo, Luca.

Programar em java de forma estruturada é programar BASEADO em objetos, como em vbscript (bleargh).

Você não precisa de uma linguagem OO para programar OO

Você não rpecisa de uma linguagem estruturada para programar de forma estruturada

Você pode usar OOD (Design Orientado a Objetos) com uma linguagem que não é orientada a objetos, como o C. Isso é feito na própria biblioteca-padrão do C (<stdio.h> tem a struct FILE, que é usada como se fosse um objeto.)

FILE *f = fopen ("teste.txt", "w");
fprintf (f, "Hello, 2 + 2 = %d\n", x + y);
fclose (f);

No código acima, teríamos uma instância do “objeto” FILE retornada pela função fopen. Essa instância é usada pelos métodos fprintf e fclose.

Você pode usar programação estruturada clássica com uma linguagem que é orientada a objetos, como o Java. Basta fazer todos seus métodos estáticos, e suas variáveis estáticas e públicas.

public class HelloOldWorld {
    public static int x = 2;
    public static int y = 2;
    public static void main(String[] args) {
        System.out.printf ("Hello, 2 + 2 = %d! %n", x + y);
    }
}

A linguagem ajuda, mas não é tudo. Pense o que você faz com a língua portuguesa e o que um poeta como o Fernando Pessoa faz com a língua portuguesa.

Só não concordo com o trecho acima, pois Orientação a Objetos não é uma forma de programar e sim um paradigma, uma forma de entender as situações reais e transformá-las em objetos com caractríticas encapsuladas e ações para modificá-la.

Sim, OO é um paradigma, baseado neste paradigma você tem uma forma de programar que pode ser aplciada em qualquer (!) linguagem.

Olá

Sempre que alguém diz isto cita o FILE. Mas nunca ninguém cita nenhuma outra coisa. Eu não concordo que se possa usar OOD com C sem forçar muito a barra. As tabelas de símbolos não foram preparadas para isto, o compilador não ajuda em nada. Os resultados serão pífios.

Mas como exemplo teórico foi bem lembrado.

[]s
Luca

[quote=Luca]Olá

Sempre que alguém diz isto cita o FILE. Mas nunca ninguém cita nenhuma outra coisa.[/quote]
Que tal as bibliotecas do GTK?

Eu acho que a partir do momento que qualquer classe que você crie
HERDE de Object, já temos aí pelo menos um príncipio de OO.
Agora se você vai utilizar bem a OO é outra história.
Mas Java oferece todas as ferramentas pra modelagem OO.

Outra biblioteca em C puro que é meio (mas não muito) “orientada a objetos” é o OpenSSL. Só que ela depende muito de macros e outras coisas, e convenhamos que até eu descobrir que ela era “orientada a objetos” eu pastei um pouco.

É claro que em C é realmente difícil ter programação orientada a objetos de uma forma simples - antigamente era usado o CFront, um compilador que gerava código C (terrivelmente ilegível) a partir do C++. Isso quer dizer que o C não é, em termos práticos, muito adequado para programação orientada a objetos.

Forçando a barra :twisted: :
Object-oriented programming in C
outro
Object Oriented Programming in C

Olá

:twisted::twisted::twisted:

Um desafio para quem quiser me provar que isto é viável em termos práticos: pegar um programinha open source qualquer em Java ou em C++e reescreve-lo usando C. Pode ser o JBoss mas eu sugiro o tomcat por que até livro tem sobre seu fonte

[]s
Luca

Trabalhar com Java de modo procedural não tem vantagens, pois o forte do Java é a OO. A oo como todos sabem, traz vários beneficios se comarada a programação procedural:
Modularidade;
Escalabilidade;
Manutenção mais fácil;
Coerência, entre outros.

Um abraço.

[quote=Marcio_Nogueira]Trabalhar com Java de modo procedural não tem vantagens, pois o forte do Java é a OO. A oo como todos sabem, traz vários beneficios se comarada a programação procedural:
Modularidade;
Escalabilidade;
Manutenção mais fácil;
Coerência, entre outros.

Um abraço.[/quote]

Discordo de vc.

OO em 99% dos casos é sim a melhor escolha e traz inumeras vantagens.
Mas nao 100% dos casos.

O que seria esse 1% que deve ser feito em procedural?

Um ‘sistema’ de 4 tabelas desenvolvido com uma ferramenta RAD pra Java.

A não ser que vc considere uma instância de uma classe só com gets e sets, sem nenhuma logica, um objeto. Se for isso ai sim, java so trabalha orientado a objetos.

Ué, é o que?

Até concordo que um JFrame com um monte de métodos dentro de uma única classe possa parecer procedural, mas pra mim só o fato de você criar uma String e manipular ela já está trabalhando com objetos.

Vamos concordar que procedural em Java ninguém faz… eu acho né…