Buscar

ApresentaçãoPrincípios(1)

Prévia do material em texto

1 / 41
Trabalho programação I
Prof: Newton
Programação orientada a objetos
 2 / 41
Alunos:
● Willamis Rodrigues
● David Laurindo
● Caiã Augusto
● Matheus
● Antonio Ermeson
 3 / 41
Introdução
● Conceito de Programação Orientada a Objetos 
● Vantagens e desvantagens da POO.
● Relação dos conceitos de Classe X Objetos.
● Exemplo de Programação com a POO.
● Princípios da POO, Encapsulamento, Herança e 
Polimorfsmo.
 4 / 41
Conceito de programação 
Orientada a Objeto
 5 / 41
Trata-se de um paradigma de programação 
relativamente recente, que se baseia 
fundamentalmente no
conceito de Objetos. É uma forma de 
desenvolvimento de sistemas de software que o 
trata como um
conjunto de componentes que interagem entre si 
para resolver um problema. Esses componentes 
são
denominados Objetos.
 6 / 41
* Objetos
Os objetos são a base da Orientação a Objetos. Os 
objetos representam entidades do mundo real, 
como
cliente, agencias, contas correntes, etc. Um objeto 
possui características próprias (atributos) e executa
determinadas ações (métodos), sendo esses 
atributos e métodos provenientes da classe que 
origina o objeto.
 7 / 41
 8 / 41
* Abstração
Abstrair signifca selecionar aspectos 
específcos de um problema a ser analisado, 
deixando de lado outros
aspectos. É a representação de uma 
entidade do mundo real na forma de ideias.
 9 / 41
* Mensagem
Os objetos se comunicam a partir da troca de 
mensagens. Uma mensagem é um sinal enviado de 
um
objeto a outro, o qual requisita um serviço, usando 
uma operação programada no objeto chamado. Por
exemplo, para que um objeto execute um método, é 
necessário enviar a este objeto uma mensagem
solicitando a execução do método desejado
 10 / 41
 11 / 41
* Classes
Uma Classe é uma coleção de objetos que são descritos com os mesmos
atributos e as mesmas operações. Uma classe representa uma idéia ou conceito
e classifca objetos que tenham propriedades similares. Uma classe é como se
fosse um tipo abstrato de dados, um “molde” para a criação de objetos.
As classes possuem atributos e métodos. Atributos são características da classe,
que são comuns a todos os objetos derivados, e que podem apresentar valores 
diversos. Já os Métodos são
as operações possíveis em uma classe (nos objetos instanciados a partir dela) .
 12 / 41
* Atributo de Classe
Característica particular de uma ocorrência de uma classe, como por exemplo o 
nome e a idade de uma
pessoa. Existem dois tipos principais de propriedades: - Estáticas: Mantém o 
mesmo valor durante toda a sua
existência. Por exemplo, a data de nascimento de uma pessoa é uma propriedade 
estática, pois mantém o
mesmo valor durante toda a existência do objeto instanciado. - Dinâmicas: 
Podem ter valores que variam com
o passar do tempo. A idade de uma pessoa pode ser considerada um atributo 
dinâmico, pois pode variar ao
longo do tempo.
 13 / 41
* Métodos
É a lógica contida em uma classe para atribuir-lhe comportamentos. São as 
funções e procedimentos contidos
na classe. O ato de invocar um método é a passagem de mensagens para o 
objeto. Um método possui um
nome e um corpo onde fcam os comandos que serão executados quando o 
método for chamado, e também
podem receber dados para processamento (parâmetros) e retornar 
informações. Os métodos são a forma
principal de passagem de mensagens entre objetos. Os métodos também 
precisam ter um tipo de retorno,
que pode ser um tipo de valor, de referência ou ainda void (não retornam valor).
 14 / 41
* Instancia de um a Classe
É o objeto, uma ocorrência específca de uma classe. As 
classes originam instâncias sob requisição, no
processo denominado Instanciação. O projetista / 
analista cria a classe. A classe é então usada para criar
objetos em tempo de execução. Veja a seguir um 
exemplo de criação de classe na linguagem C# .
 15 / 41
Vantagens e desvantagens 
de trabalhar com POO
 16 / 41
História
Nos anos 60 é lançado a Simula-67 que apresentou pela primeira vez os conceitos de 
classes, rotinas correlatas e subclasses. Na década de 70 a Seros-PARC cria a Smalltak até 
hoje considerada a mais pura das LPOO. No fnal da década de 80 aparece a C++, uma 
linguagem híbrida.
Orientação a Objetos é o maior avanço em software destes últimos anos. É uma forma 
mais natural de se analisar o mundo. Ela nos permite construir sistemas melhores e, além 
disso, de maneira mais fácil. Será a mais importante das tecnologias emergentes na área 
de software nos anos 90.
As técnicas estruturadas que, sem dúvida, atualmente são as mais populares na 
comunidade de informática, obtiveram grande aceitação desde que foram lançadas no 
fnal dos anos 70. Contudo a medida que foram sendo utilizadas, a decomposição 
funcional mostrou-se inadequada em situações de sistemas complexos e principalmente 
para profssionais iniciantes. Os aperfeiçoamentos introduzidos em 1984, por Sthephen M 
e John F Palmer e, mais tarde, complementados por Stephen Mellor e Paul Ward, para 
sistemas em real-time, ajudaram a análise estruturada a se tornar mais efciente. Contudo 
os sistemas criados com as técnicas estruturadas ainda são difíceis de serem 
incrementados com novas funções e as alterações em funções já existentes, muitas vezes, 
provocam sérios problemas em outras partes do software.
 17 / 41
A reutilização
A reutilização está baseada na 
padronização a qual é adotada há 
longa data em toda a indústria 
moderna, seja no projeto de carros, 
televisores, computadores, etc. A 
padronização traz inúmeras 
vantagens, entre elas podemos citar a 
seguintes:
 18 / 41
1 as peças padrões são mais baratas
2 são mais confáveis
3 geralmente são mais fáceis de serem 
consertadas ou substituídas
Na informática a reutilização de códigos ainda é 
praticada em escala muito reduzida e decorrente da 
iniciativa isolada de alguns programadores e projetistas. 
São vários os motivos para isso, entre eles:
 19 / 41
1 existência de uma Biblioteca e de um Sistema de Catálogo
2 facilidade para documentação
3 sistemática rigorosa para testes
4 novas técnicas para especifcação de sistemas tendo em vista a 
reutilização de módulos
5 linguagem, ferramentas e ambientes de desenvolvimento que 
estimulem a adoção, em larga escala, de tais métodos dentro 
das empresas
6 criação de novos geradores de sistemas que operem 
selecionando e combinando módulos padrões e que 
satisfaçam as necessidades específcas das aplicações
7 mudança administrativas e gerenciais nas empresas de modo 
a apoiarem e estimularem os criadores de módulos padrões.
 20 / 41
Vantagens da Orientação a 
Objeto
● Vantagens Diretas – maior facilidade para reutilização de 
código e por consequência do projeto – possibilidade do 
desenvolvedor trabalhar em um nível mais elevado de 
abstração – utilização de um único padrão conceitual durante 
todo o processo de criação de software – maior adequação à 
arquitetura cliente/servidor – maior facilidade de comunicação 
com os usuários e com outros profssionais de informática.
● Vantagens Reais – ciclo de vida mais longo para os sistemas – 
desenvolvimento acelerado de sistemas – possibilidade de se 
construir sistema muito mais complexos, pela incorporação de 
funções prontas – menor custo para desenvolvimento e 
manutenção de sistemas
 21 / 41
Desvantagens
● Complexidade no aprendizado para desenvolvedores de 
linguagens estruturadas
● Maior uso de memória (heap), por exemplo para aplicações 
móveis em JavaME
● Maior esforço na modelagem de um sistema OO do que 
estruturado (porém menor esforço de codifcação, sendo uma 
vantagen)
● Funcionalidades limitadaspor interface, quando estas estão 
incompletas (problemas na modelagem)
● Dependência de funcionalidades já implementadas em 
superclasses no caso da herança, implementações espalhadas 
em classes diferentes
 22 / 41
Os princípios e vantagens 
da programação orientada 
a objeto.
 23 / 41
Principais vantagens da POO.
A programação orientada a objetos traz uma ideia 
muito interessante: a representação de cada 
elemento em termos de um objeto, ou classe. Esse 
tpo de representação procura aproximar o sistema 
que está sendo criado ao que é observado no 
mundo real, e um objeto contém característcas e 
ações, assim como vemos na realidade. Esse tpo de 
representação traz algumas vantagens muito 
interessantes para os desenvolvedores e também 
para o usuário da aplicação. Veremos algumas delas 
a seguir.
 24 / 41
A reutlização de código é um dos principais requisitos no 
desenvolvimento de softare atual. Com a complexidade 
dos sistemas cada vez maior, o tempo de desenvolvimento 
iria aumentar exponencialmente caso não fosse possível a 
reutlização. A orientação a objetos permite que haja uma 
reutlização do código criado, diminuindo o tempo de 
desenvolvimento, bem como o número de linhas de código. 
Isso é possível devido ao fato de que as linguagens de 
programação orientada a objetos trazem representações 
muito claras de cada um dos elementos, e esses elementos 
normalmente não são interdependentes. Essa 
independência entre as partes do softare é o que permite 
que esse código seja reutlizado em outros sistemas no 
futuro.
 25 / 41
Outra grande vantagem que o desenvolvimento orientado a 
objetos traz diz respeito a leitura e manutenção de código. 
Como a representação do sistema se aproxima muito do 
que vemos na vida real, o entendimento do sistema como 
um todo e de cada parte individualmente fca muito mais 
simples. Isso permite que a equipe de desenvolvimento não 
fque dependente de uma pessoa apenas, como acontecia 
com frequência em linguagens estruturadas como o C, por 
exemplo.
 26 / 41
A criação de bibliotecas é outro ponto que é muito 
mais simples com a orientação a objetos. No caso 
das linguagens estruturadas, como o C, temos que 
as bibliotecas são coleções de procedimentos (ou 
funções) que podem ser reutlizadas. No caso da 
POO, entretanto, as bibliotecas trazem 
representações de classes, que são muito mais 
claras para permitrem a reutlização.
 27 / 41
Entretanto, nem tudo é perfeição na programação 
orientada a objetos. A execução de uma aplicação 
orientada a objetos é mais lenta do que o que vemos na 
programação estruturada, por exemplo. Isso acontece 
devido à complexidade do modelo, que traz representações 
na forma de classes. Essas representações irão fazer com 
que a execução do programa tenha muitos desvios, 
diferente da execução sequencial da programação 
estruturada. Esse é o grande motvo por trás da preferência 
pela linguagem C em hardtare limitado, como sistemas 
embarcados. Também é o motvo pelo qual a programação 
para sistemas móveis como o Google Android, embora em 
Java (linguagem orientada a objetos), seja feita o menos 
orientada a objetos possível.
 28 / 41
No momento atual em que estamos, 
tecnologicamente essa execução mais lenta não é 
sentda. Isso signifca que, em termos de 
desenvolvimento de sistemas modernos, a 
programação orientada a objetos é a mais 
recomendada devido as vantagens que foram 
apresentadas. Essas vantagens são derivadas do 
modelo de programação, que busca uma 
representação baseada no que vemos no mundo 
real.
 29 / 41
Princípios da programação 
orientada a objetos.
 30 / 41
Encapsulamento.
O encapsulamento é uma das principais técnicas que defne 
a programação orientada a objetos. Se trata de um dos 
elementos que adicionam segurança à aplicação em uma 
programação orientada a objetos pelo fato de esconder as 
propriedades, criando uma espécie de caixa preta.
 31 / 41
A maior parte das linguagens orientadas a objetos 
implementam o encapsulamento baseado em 
propriedades privadas, ligadas a métodos especiais 
chamados geters e seters, que irão retornar e setar 
o valor da propriedade, respectvamente. Essa 
attude evita o acesso direto a propriedade do 
objeto, adicionando uma outra camada de 
segurança à aplicação.
 32 / 41
Para fazermos um paralelo com o que vemos 
no mundo real, temos o encapsulamento em 
outros elementos. Por exemplo, quando 
clicamos no botão ligar da televisão, não 
sabemos o que está acontecendo 
internamente. Podemos então dizer que os 
métodos que ligam a televisão estão 
encapsulados.
 33 / 41
Herança.
O reuso de código é uma das grandes 
vantagens da programação orientada a 
objetos. Muito disso se dá por uma questão 
que é conhecida como herança. Essa 
característca otmiza a produção da aplicação 
em tempo e linhas de código.
 34 / 41
Para entendermos essa característca, vamos imaginar uma 
família: a criança, por exemplo, está herdando característcas de 
seus pais. Os pais, por sua vez, herdam algo dos avós, o que faz 
com que a criança também o faça, e assim sucessivamente. Na 
orientação a objetos, a questão é exatamente assim, como 
mostra a Figura 2. O objeto abaixo na hierarquia irá herdar 
característcas de todos os objetos acima dele, seus “ancestrais”. 
A herança a partr das característcas do objeto mais acima é 
considerada herança direta, enquanto as demais são 
consideradas heranças indiretas. Por exemplo, na família, a 
criança herda diretamente do pai e indiretamente do avô e do 
bisavô.
 35 / 41
 36 / 41
A questão da herança varia bastante de linguagem 
para linguagem. Em algumas delas, como C++, há a 
questão da herança múltpla. Isso, essencialmente, 
signifca que o objeto pode herdar característcas de 
vários “ancestrais” ao mesmo tempo diretamente. 
Em outras palavras, cada objeto pode possuir 
quantos pais for necessário. Devido a problemas, 
essa prátca não foi difundida em linguagens mais 
modernas, que utlizam outras artmanhas para 
criar uma espécie de herança múltpla.
 37 / 41
Outras linguagens orientadas a objetos, como 
C#, trazem um objeto base para todos os 
demais. A classe object fornece característcas 
para todos os objetos em C#, sejam criados 
pelo usuário ou não.
 38 / 41
Polimorfsmo
Outro ponto essencial na programação orientada a objetos 
é o chamado polimorfsmo. Na natureza, vemos animais 
que são capazes de alterar sua forma conforme a 
necessidade, e é dessa ideia que vem o polimorfsmo na 
orientação a objetos. Como sabemos, os objetos flhos 
herdam as característcas e ações de seus “ancestrais”. 
Entretanto, em alguns casos, é necessário que as ações 
para um mesmo método seja diferente. Em outras palavras, 
o polimorfsmo consiste na alteração do funcionamento 
interno de um método herdado de um objeto pai.
 39 / 41
Como um exemplo, temos um objeto 
genérico “Eletrodoméstco”. Esse objeto 
possui um método, ou ação, “Ligar()”. 
Temos dois objetos, “Televisão” e 
“Geladeira”, que não irão ser ligados da 
mesma forma. Assim, precisamos, para 
cada uma das classes flhas, reescrever o 
método “Ligar()”.
 40 / 41
Com relação ao polimorfsmo, valem algumas 
observações. Como se trata de um assunto que está 
intmamente conectado à herança, entender os dois 
juntamente é uma boa ideia. Outro ponto é o fato 
de que as linguagens de programação implementam 
o polimorfsmo de maneiras diferentes. O C#, por 
exemplo, faz uso de método virtuais (com a palavra-
chave virtual) que podem ser reimplementados 
(com a palavra-chave override) nas classes flhas. Já 
em Java, apenas o atributo “@Override” é 
necessário.
 41 / 41
Esses quatro pilares são essenciais noentendimento 
de qualquer linguagem orientada a objetos e da 
orientação a objetos como um todo. Cada 
linguagem irá implementar esses pilares de uma 
forma, mas essencialmente é a mesma coisa. 
Apenas a questão da herança, como comentado, 
que pode trazer variações mais bruscas, como a 
presença de herança múltpla. Além disso, o 
encapsulamento também é feito de maneiras 
distntas nas diversas linguagens, embora os geters 
e seters sejam pratcamente onipresentes.
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41

Continue navegando