Entendendo orientação a objetos na prática (parte 1)
Originalmente este artigo compõe uma série em meu site pessoal chamada "aprender programando". Nesta parte são expostos os conceitos fundamentais da orientação a objetos. Ao fim desta, espera-se que o leitor compreenda especialmente o conceito de encapsulamento e faça a diferenciação entre classes e objetos. Boa leitura!
Apresentação
Olá, pessoal. Não sou professor, sou apenas um estudante de sistemas de informação indo para o 3° ano do curso (falta pouco!).
Como colega de outros estudantes, percebo que apesar de todo o esforço de muitos professores em sala de aula ou laboratórios, muito pouco do que eles passam é realmente aproveitado.
Observei o seguinte: há uma grande dificuldade em se apreender conceitos simples como polimorfismo, herança e até ocorrem confusões quanto aos termos overload e override. Além disso, a maioria dos estudantes parece perdido frente a conceitos como encapsulamento: não sabem decidir quando declarar um método ou atributo como público, privado ou protegido (public, private ou protected).
Isso é ruim, muito ruim.
Decidi então partilhar um pouco do que aprendi (Sei... existem muitos conceitos, muitos posts pela internet apresentando o mesmo assunto), mas não vamos ficar só na teoria, na apresentação de conceitos ou códigos previamente elaborados.
Minha proposta aqui vai além, e meu objetivo é demonstrar claramente cada conceito com base em uma das melhores questões de avaliação de programação que eu já vi.
Vou dividir esse post em pelo menos 3 partes, uma contemplando a teoria mesmo e apresentando conceitos básicos de design e desenvolvimento orientados a objetos, e as outras caindo na prática pra criarmos uma solução à questão proposta.
Nesta primeira parte iremos abordar uma definição trazendo também uma contextualização histórica e apresentaremos alguns conceitos básicos.
Uma boa leitura!
Como colega de outros estudantes, percebo que apesar de todo o esforço de muitos professores em sala de aula ou laboratórios, muito pouco do que eles passam é realmente aproveitado.
Observei o seguinte: há uma grande dificuldade em se apreender conceitos simples como polimorfismo, herança e até ocorrem confusões quanto aos termos overload e override. Além disso, a maioria dos estudantes parece perdido frente a conceitos como encapsulamento: não sabem decidir quando declarar um método ou atributo como público, privado ou protegido (public, private ou protected).
Isso é ruim, muito ruim.
Decidi então partilhar um pouco do que aprendi (Sei... existem muitos conceitos, muitos posts pela internet apresentando o mesmo assunto), mas não vamos ficar só na teoria, na apresentação de conceitos ou códigos previamente elaborados.
Minha proposta aqui vai além, e meu objetivo é demonstrar claramente cada conceito com base em uma das melhores questões de avaliação de programação que eu já vi.
Vou dividir esse post em pelo menos 3 partes, uma contemplando a teoria mesmo e apresentando conceitos básicos de design e desenvolvimento orientados a objetos, e as outras caindo na prática pra criarmos uma solução à questão proposta.
Nesta primeira parte iremos abordar uma definição trazendo também uma contextualização histórica e apresentaremos alguns conceitos básicos.
Uma boa leitura!
Se for possível, na parte 2, aborde um pouco de operator overload. Isso tá bastante obscuro pra mim.