Qual a melhor forma de aprender conceitos / princípios de POO praticamente? [fechadas]

12

Eu queria aprender uma linguagem de programação orientada a objetos, não quero, para nenhum propósito, apenas conhecer todo o conceito de OOP. Então, alguém pode me dizer qual idioma devo começar a aprender?

Caffeinatedwolf
fonte
1
Quais idiomas você já conhece?
Mchl
C, VB.NET e C ++, mas não a parte OOP
Caffeinatedwolf
1
pegar VB.NET então
Vinoth Kumar CM
Não, eu não quero VB.NET Eu quero vocês para me ajudar a escolher entre Java, C ++, Python etc ...
Caffeinatedwolf
3
Você quer aprender praticamente algo sem propósito?
Jeffo

Respostas:

13

Algumas sugestões adicionais:

  • O melhor livro que eu já li sobre o OOP Bar nenhum é o Bertrand Meyer, Object Oriented Software Construction . Não é uma leitura "fácil", pois você precisará pensar muito em alguns lugares. Mas ele faz o melhor trabalho que eu já vi ao explicar os princípios de OO.

  • Quanto aos idiomas: eu ficaria longe do C ++. Grande demais para fins de aprendizado. Se você quer um idioma que realmente o ajude a entender OO (em oposição a um que você escreveria aplicativos principais em / conseguiria um emprego), observe o smalltalk. Ou Eiffel (a língua no livro de Meyer acima).

  • Se você quer uma linguagem um pouco mais mainstream, mas que ainda suporte fielmente os princípios de OO, o Python é uma boa aposta. Java e C # também são decentes se você deseja digitar estática.

Porém, uma palavra de cautela: o idioma não lhe ensinará OO. Ele só pode ajudar (ou dificultar) o quão bem ele suporta os conceitos de OO. Aprender OO é realmente aprender a pensar em termos de OO. Por isso, voltaria ao livro de Meyer.

hth.

sfinnie
fonte
1
As outras coisas em C ++ são importantes . É importante saber sobre herança virtual. É importante conhecer um forte suporte genérico em tempo de compilação e é importante saber sobre valor versus referência. Indo para algo como Java está apenas dizendo "LA LA LA, NÃO POSSO OUVIR VOCÊ ESTA É A ÚNICA MANEIRA DE FAZER".
DeadMG
2
sim e não. A pergunta do OP era sobre aprendizado, o que implica primeiro o básico. Não estou convencido de que o C ++ esteja entre os candidatos como a linguagem de aprendizado mais adequada . Dito isto: Meyer cobre genéricos e valor versus referência de qualquer maneira, embora sejam tópicos mais avançados. Ele também entra em co-e contra-variação, nas últimas partes do livro. Mas ele define o básico primeiro. (E Eiffel é digitado estaticamente entre).
Sfinnie
1
Não vou concordar ou discordar de uma recomendação de Eiffel, já que nunca usei, nem vi nem li nada sobre isso. No entanto, discordo absolutamente de qualquer recomendação para Java e C #, como eu disse.
DeadMG
12

Você pode aprender qualquer uma das linguagens orientadas a objetos, como C ++, Java, C # etc. para experimentar o OOPS.

Se você realmente deseja aprender OOP, precisa pensar além das linguagens e entender que é um paradigma que ajuda a complexidade do mangá envolvida em programas de software, exatamente como os gerenciamos no mundo real. Em seguida, aprenda os conceitos básicos em OO, como polimorfismo, herança, encapsulamento (PIE) etc.

Existem bons livros sobre Análise e Design Orientados a Objetos com Aplicações (2ª Edição), de Grady Booch

Além disso, você pode experimentar blogs como este, que eu achei simples o suficiente para começar- fascinatingoops.com

WinW
fonte
3

Você quer aprender OOP? Uma resposta - Smalltalk.

É uma linguagem elegante e é essencial para o OO. Você aprenderá POO desde o início e não será prejudicado por todas as outras distrações que outros idiomas conseguem incorporar.

Smalltalk vence. E também existem alguns e-books gratuitos gratuitos (veja: Stephane Ducasse )

Cavaleiros de Simon
fonte
3

Você precisaria aprender C ++, ou talvez um dos antepassados ​​como Smalltalk. O C ++ oferece uma separação clara entre conceitos como orientação a objetos, gerenciamento de memória e referência versus valor, além de oferecer forte suporte genérico.

Não aprenda Java ou uma linguagem .NET como C #. Quando você aprende uma linguagem como Java, aprende coisas como "Os objetos estão sempre na pilha e sempre são referências", o que é verdadeiro apenas para Java e absolutamente não verdadeiro para OOP em geral. Essa fusão de conceitos (orientação a objetos, gerenciamento de memória, referência versus valor) é muito perigosa para um primeiro idioma, porque uma vez que você os prende na cabeça, pode ser muito difícil recuperá-los. C # é um pouco melhor nesse sentido, mas não muito. Além disso, eles podem ter uma alta tendência a ensinar "A herança é um martelo e tudo é um prego", com um fraco suporte de programação genérica.

DeadMG
fonte
Isso é verdade. Eu nunca pensei nisso antes, na verdade, ao lidar com uma linguagem muito focada em OOP e tentar resolver tudo com OOP, você nunca aprenderá quais problemas não são realmente adequados para OOP.
Daramarak
1

A melhor maneira de aprender conceitos de POO é escrever cada vez mais código e revisá-lo com frequência. A prática faz de um bom programador.

Pense em cenários do mundo real, defina uma declaração de problema - resolva-a em código e faça uma revisão. Você sempre pode obter ajuda em /codereview// para obter comentários :)

Feliz codificação !!!

karthiks
fonte
0

Passos

  1. Aprenda o que eles significam.
  2. Aprenda a implementá-los.
  3. Faça um projeto para desenvolver, escolha sua linguagem [que deve ter o princípio OOPS integrado como VB.NET ou C # ou C ++ ou java etc]
  4. Pense em como você pode simplificar a lógica do projeto pelo OOPS. [Nota: não apenas implemente OOPS porque você queria tê-los, eles devem resolver seu objetivo]
  5. Não se esqueça: você também aprenderá com seus erros .
Chris
fonte
0

Meu primeiro contato com o mundo OO foi C ++, o que não foi um começo ruim. Mas eu melhorei muito ao aprender Python. A diferença vem das linguagens: experimentar idéias ('como posso resolver esse problema de maneira OO?') Em C ++ precisa de mais código para ser escrito e inclui muito mais armadilhas do que tentar a mesma idéia em Python. Então, eu recomendaria Python.

rocksportrocker
fonte
0

Eu não acho que você deva procurar outro idioma enquanto tenta aprender OOP. Para mim, é mais fácil entender a teoria e aprender a aplicá-la, se eu puder me relacionar com algo que já conheço. Descobrir uma nova sintaxe apenas atrapalha.

Você pode começar com qualquer livro de POO. Mais uma vez, eu pegaria um no meu idioma de escolha. A leitura de um livro sobre refatoração (estilo OOP) me ajudou na aplicação do OOP. Peguei um projeto existente (sem distração da coleta de requisitos) e encontrei novas maneiras de aprimorá-lo. Não foi apenas POO por POO. Depois, você pode aprender como fazê-lo do início ao fim em um novo projeto. A lógica aqui é que você nem sempre acertará desde o início. Se você conseguir reconhecer onde é apropriado, estará melhor. Como a maioria das coisas, não vai resolver todos os problemas.

Existem limitações definidas em alguns idiomas. Se seu objetivo é ser o mestre da herança múltipla, o .NET está fora.

JeffO
fonte
0

Eu vou contra o pensamento convencional aqui e sugiro que os idiomas mais fáceis de usar OOP não sejam necessariamente os melhores para aprender . Fui exposto pela primeira vez ao OOP com C ++, mas não o "compreendi” até ler o capítulo do livro Camel de Larry Wall sobre OOP com Perl. Por alguma razão, tive problemas para entender a diferença entre classes e objetos até ter que explicitamente abençoar um objeto em uma classe. Eu realmente não entendi a implementação subjacente do OOP até fazê-lo em C com GObject, onde nenhum desses detalhes está oculto. Eu realmente não entendi as melhores práticas até participar de uma aula corporativa independente do idioma. É um tópico muito grande,.

Karl Bielefeldt
fonte