No nosso cotidiano, usamos generalizações todo o tempo. A generalização é um mecanismo extremamente útil que nos permite fazer referência a um grupo de indivíduos de uma determinada população através de suas características comuns.
Por exemplo, ao referenciarmos os alunos de uma turma através do nome da turma, estamos utilizando a característica daquelas pessoas serem alunos e a participação em um determinado grupo como características comuns. É muito mais simples do que enumerar todos, um a um, pelo nome.
Assim, recorremos a duas generalizações (“alunos” e a participação em uma turma específica) para “delimitar” o universo de indivíduos a que estamos nos referindo.
Caso tivéssemos apenas dito “a turma”, vários outros conceitos poderiam estar incluídos, como o professor, por exemplo. E caso tivéssemos dito apenas “alunos”, estaríamos nos referindo a alunos de diversas turmas. Desta forma, vemos que a generalização de uma característica comum a todos aqueles indivíduos fez surgir um conceito abstrato, o conceito de “aluno”.
“Aluno” é um conceito abstrato, criado pelo nosso poder de abstração. O que podemos dizer sobre um aluno de maneira genérica é que existe “um indivíduo que desempenha um comportamento” e a convenção é de que este indivíduo quando desempenha este comportamento tem o nome “aluno”.
Em uma sala de aula é possível apontar para “um aluno” (um indivíduo), mas não é possível apontar para “aluno” (conceito).
A capacidade de codificar em um software os conceitos abstratos do mundo real (o conceito aluno, por exemplo) e instanciar estes conceitos é o fundamento da orientação a objetos. Deste modo, em um software orientado a objetos, chamamos de classe a descrição dos conceitos do mundo real e de instância os indivíduos que desempenham os comportamentos descritos nestas classes.
Por sua vez, chamamos de atributos as características de um indivíduo (como pertencer a uma determinada turma) e de métodos, a representação de seus comportamentos.
Esta capacidade trouxe uma nova forma de entender e codificar software, permitindo que este possa, de forma modularizada, evoluir a um nível de complexidade muito maior que na programação estruturada.
Quando softwares se tornam grandes e complexos, ficam mais difíceis de serem mantidos; porém, quando são bem modularizados com responsabilidades isoladas em componentes específicos, a manutenibilidade é favorecida, agilizando o desenvolvimento através de reuso.
De tal modo, uma série de cuidados são necessários ao se projetar bem as classes e os componentes a fim de se construir softwares grandes e complexos tendo um baixo índice de retrabalho, mantendo razoáveis os níveis de produtividade dos desenvolvedores e a confiabilidade do software (importante para a confiança do cliente na qualidade do serviço prestado).
Ainda, conforme uma organização usa um software, suas necessidades mudam e os requisitos para que este software mantenha sua utilidade mudam junto. Isto (além da correção de erros provenientes do processo de construção do software) acarreta, muitas vezes, em pedidos de mudanças ou melhorias, fazendo com que a qualidade do software seja prejudicada.
Este processo natural de degeneração do software torna necessários cuidados extras para manter sua qualidade, garantindo que possa ser facilmente entendido por quem for implementar novas funcionalidades ou consertá-lo, reduzindo o impacto da mudança a poucas classes ou pequenos módulos bem delimitados.
Definindo uma classe
De acordo com a orientação a objetos,classes são conceitos definidos através de atributos e métodos que representam a descrição de objetos.
Este processo então exige uma “tradução” de conceitos para código. Assim como uma mensagem pode ser escrita em diferentes frases ou textos, um conceito pode ser codificado de diversas maneiras e não há regras para esta “tradução”.
Geralmente, quando se fala de orientação a objetos, três conceitos são citados:
- Herança: A habilidade de uma classe adquirir a estrutura e o comportamento de outra. Quando uma herança é implementada, diz-se que “uma subclasse herda de uma superclasse”. Através deste conceito, uma subclasse pode estender o comportamento da superc ...
Quer ler esse conteúdo completo? Tenha acesso completo
Confira outros conteúdos:
Escola de ProgramaçãoEm caso de dúvidas chame no whatsapp
AQUI TODO
MUNDO
APRENDE
Plano Anual12x
R$69,00
12 MESES = R$ 828,00- Formação FullStack completa
- +10mil exercícios gamificados
- +50 projetos reais
- Suporte online
Plano RecorrenteR$99,00 /mêsprimeiros
3 mesesR$59,00 /mêsa partir
do 4° mês12 MESES = R$ 828,00- Formação FullStack completa
- +10mil exercícios gamificados
- +50 projetos reais
- Suporte online
- Pra quem tem pouco limite no cartão
- Fidelidade de 12 meses
Perguntas frequentes
Quem somos?Por que a programação se tornou a profissão mais promissora da atualidade?Como faço para começar a estudar?Em quanto tempo de estudo vou me tornar um programador?Sim, você pode se tornar um programador e não precisa ter diploma de curso superior!O que eu irei aprender estudando pela DevMedia?Principais diferenciais da DevMediaQual o investimento financeiro que preciso fazer para me tornar um programador?Como funciona a forma de pagamento da DevMedia?Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado! Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um Full-Stack Dev!Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Por Devmedia Em 2014