Orientação a Objetos Prof. MSc. João Ricaro !ittenco"rt
U#ate$ %& Set. '(%) joaorb*"nisinos.br joaorb*"nisinos.br
Algoritmos e Programação em C++
Conceito O que é paradigma? #araigma (grego parádeigma, -atos) s. m. 1. Algo ,"e ser-e e eem#lo geral o" e moelo. 0 #arão 2. Gram. Conjunto das formas que servem de modelo de derivação ou de flexão. = padrão 3. Ling. Conjunto dos termos ou elementos que podem oorrer na mesma posição ou ontexto de uma estrutura.
O que significa isso no contexto de programação?
•
•
•
É um modelo, um padrão ou um estilo de programação que tem determinadas características. Uma forma de ver e de resolver os problemas.
/// "ommon (isp
1i#os Programação Imperativa
ortran, !ascal, ", #asic Programação Orientada a Objetos
(deun !ello"orld (# (print $Ol% mundo&$# #
22 'ava class +ello3orld , static public void main( -tring args/ # , $4stem.out.println( $Ol% mundo&$ #0
$malltal%, "&&, 'ava
1 1
Programação Funcional ou Descritiva
()$!, *(, +as%ell, Programação em Lógica
!-O(O, !opler E muuuuitas outras..
0 !rolog 1ello ' displa)(*Ol% mundo&*# + nl .
Programação Im#erati-a !rogramas centrados no conceito de um estado 5modelado por vari6veis7 e aç2es 5comandos7 que manipulam o estado. !aradigma também denominado de procedural. !rocedimentos e funç8es !rimeiro paradigma a surgir e ainda é o dominante.
Prog. Orientação a Objetos Plants vs. 3ombies 9iferentes tipos de :umbis ;parmural1as
orça =@mero de tiros que precisam levar para morrer
Prog. Orientação a Objetos Outros exemplos?A
Prog. Orientação a Objetos O que todas as cadeiras tem em comum? Bodas servem para sentar... CD! "omo saber que um obEeto é uma cadeira? "aracterísticas 5atributos7 uncionalidade5s7 5métodos7 Bodos os objetos mostrados na imagem anterior são da
classe "adeira.
Prog. Orientação a Objetos Ficamos então com duas ideias' classe e objeto. O 4ue 5 uma classe6
É uma categoria, uma descrição de algum obEeto... -epresentam 5modelam7 uma entidade que pode ser do mundo real ou uma abstração de um conceito. O 4ue 5 um objeto6
)nstFncia de uma classe É a materiali:ação de um conceito formali:ado É uma vari6vel existente na memGria do computador
Prog. Orientação a Objetos ; programação Orientada a ObEetos define a ideia de Encapsulamento. $ignifica que um obEeto deve conter toda a informação que ele precisa.
7m objeto deve conter todo o comportamento necess%rio para sua e8ecução dentro de si e não separado por classes não relacionadas. Para usar um celular não 5 necess%rio saber ele unciona por dentro+ mas sim as uncionalidades dele.
Como re#resentar "ma classe2 ;través de atributos e de m5todos. 9tributosC representam os dados e seus valores
definem o estado do obEeto. :5todosC são as aç8es que o obEeto é capa: de
reali:ar. !odem agir sobre seus prGprios atributos ou permitir a interação 5envio de mensagem7 a outros obEetos.
Como re#resentar "ma classe2 Uma classe é composta de duas partesC a interace e a implementação. ; interace contém a declaração dos atributos e dos métodos de uma classe, bem como a sua visibilidade. ; implementação contém o cGdigo 5comandos7 dos m5todos.
Prog. Orientação a Objetos Ocultamento
Ocultamento é uma das tarefas do encapsulamento.
Um obEeto deve HesconderI 5proteger7 seus dados de acesso externo direto. ;ssim é possível evitar que os atributos seEam corrompidos.
9 uncionalidade do objeto est% ocultada na deinição.
Prog. Orientação a Objetos ;isibilidade
; visibilidade est6 relacionada ao Encapsulamento. Jm "&& existem tr
Prog. Orientação a Objetos ;isibilidade P
Budo o que est6 declarado dentro da seção p@blica de uma classe é visível e acessível externamente a classe. Ou seEa, a seção p@blica define a )nterface da classe que é acessível por outros obEetos. =ão é boa pr6tica de programação declarar atributos na seção p@blica.
Prog. Orientação a Objetos ;isibilidade Oculta protected e private
=este momento não interessa muito a diferença entre protected e private. #asta saber que, nestes casos, os métodos e atributos sG podem ser acessados pela prGpria classe.
Interface class Mago ==9r4uivo mago.! { public: Mago(); ~Mago(); void andar(); void falar(); void invocarMagia(); protected : string nome, escolaDeMagia; int poder, idade; };
Interface class Mago ==9r4uivo mago.! 22!odem existir atributos p@blicos, mas isso fere o princípio da OO. { public: Mago(); ~Mago(); *étodos void andar(); void falar(); void invocarMagia(); protected : string nome, escolaDeMagia; ;tributos int poder, idade; }; 22*étodos podem ser ocultos 5protected ou private7 sem problema algum.
Constr"tores e 3estr"tores :5todo >onstrutor
=ome9a"lasse57/ "onstrutor !adrão 5obrigatoriamente um7 Kual o propGsito do construtor? ;locar memGria para o obEeto :5todo Destrutor
L=ome9a"lasse57/ 5somente um destrutor7 Kual o propGsito do método destrutor? (iberar memGria quando não utili:a mais o obEeto
4erc5cio !ense em tr"s lasses diferentes de o#jetos. $esreva a interfae% om os atri#utos e os m&todos relativos a essas lasses. 'ugestes tra#al*o do grau +% algum jogo que vo"s est, jogando% uma solução para *a-at*on%...