Escolar Documentos
Profissional Documentos
Cultura Documentos
AV2 de Prog 2
Passo 1: Aprenda os
Pilares da POO
Como sabemos a Programação Orientada à Objetos (aka POO, não
pesquisem no google) é um paradigma de linguagem de
programação, ou seja, uma forma de construir um código para se
chegar em um resultado.
POO Solução
Eu e você
E para que esse paradigma seja bem utilizado, ele deve é construído
em cima de 4 pilares principais que são:
● Abstração;
● Encapsulamento;
● Herança;
● Polimorfismo.
Os pilares da POO Eu entendendo nada
Fiquem flinstons que eu vou explicar os pilares, começando pela…
Passo 1.1: Abstração
A Abstração nada mais é do que a forma como pegamos algo do
mundo real, que é complexo, simplificamos ao máximo e o
transformamos em algo que pode ser manipulável através do
código. Por exemplo:
Veja este carro, suponhamos que temos que fazer
um programinha onde possamos criar um carro
com: nome, marca e ano de fabricação.
Veja que ao saber de quais informações precisamos para criar a classe, todo o resto
deve ser ignorado, a abstração é um conceito bem teórico e você precisa fazer esse
planejamento antes de começar a criar seu sistema com POO.
Passo 1.2: Encapsulamento
Seguimos então para o Encapsulamento, que serve para proteger os
dados de dentro da classe, para evitar modificações acidentais ou
algo assim, vejamos:
Ainda no exemplo do carro, podemos notar que as informações dele podem ser
acessadas sem restrição alguma através do ponto:
Além também de poderem ter seus valores modificados:
Veja como o código ficou até mais claro, quando lemos set já percebemos que
estamos modificando um valor, e ao ler o get, percebemos que uma informação virá
de lá.
Agora usando o getter e setter das infos:
Uou! Esses dois métodos economizaram várias linhas de código e ainda deixaram o
código legível. Essa é a vantagem de usar o Encapsulamento, mas ainda tem uma
coisinha que podemos fazer que o JavaScript nos propõe.
Podemos usar as palavras reservadas “get” e “set” antes dos
métodos, e eles atuarão de acordo com seus papéis, vejamos o
antes e depois:
Perceba também que a forma como acessamos as propriedades
ficou um pouco diferente, veja:
Note que estamos conseguindo ler a propriedade name, mas em tese, nós criamos
um “_name” lá no constructor, então de onde vem isso? Isso mesmo, do método
name com o “get” antes, a partir do momento em que se adiciona o “get” ou o “set”
como palavra reservada, ele começa a agir como uma propriedade do objeto,
doideira, não? Vejamos o caso do set.
Veja como o setter está atuando, não sendo chamado como um método, mas tendo
um valor atribuído à propriedade que ele quer modificar, em resumo, o que estiver
depois do “=” será usado como o parâmetro da função com a palavra reservada “set”:
E é por isso que não podemos nomear as propriedades com o mesmo
nome dos métodos com “get” e “set” antes, veja:
Sobrescrita
Embora o nome difícil, o pilar é basicamente
isso, um método substitui o outro.
Passo 2: Static
Um ponto importante ainda das classes, é a flag “static” que pode
ser colocada antes de atributos e métodos, para que eles possam
ser diretamente acessados sem precisar instanciar uma classe.
Resumidamente, atente-se ao exemplo:
caso base
função
a função a função parando
dnv
Bom, para exemplificarmos, vejamos esse exemplo:
n = 0 (caso base)
n=3 n=1
Essas funções são muito úteis para simplificar lógicas repetitivas,
mas atenha-se ao caso base, se não seu programa vai dar pau.
ã o rec ursiva
o u ma funç
n d se
Eu faze sem caso ba
O console
Passo 4: Algoritmos de
Ordenação
Então, chegamos ao último assunto: Algoritmos de Ordenação. E
como o nome já é bem descritivo, podemos dizer que eles servem
para organizar dados, geralmente de arrays, em uma ordem, com
base em critérios pré-estabelecidos (ordem alfabética, numérica e
tals).
Veja que um elemento é comparado com o que vem depois, e se o que vem depois for
menor que ele, eles trocam (pintado de laranja), se não, ficam de boa (pintado de
verde). Note também que esse algoritmo é executado várias vezes (first, second e
third pass), e isso depende do tamanho do array, é por essa causa que ele é um dos
mais custosos em questão de performance também.
O funcionamento básico desse algoritmo está descrito nesses
passos:
● Em uma matriz não classificada de 5
elementos, comece com os dois primeiros
elementos e classifique-os em ordem
crescente. (Compare o elemento para verificar
qual é o maior).
● Compare o segundo e o terceiro elemento para
verificar qual é o maior e classifique-os em
ordem crescente.
● Compare o terceiro e o quarto elemento para
verificar qual é o maior e classifique-os em
ordem crescente.
● Compare o quarto e o quinto elemento para
verificar qual é o maior e classifique-os em
ordem crescente.
● Repita as etapas 1–5 até que não sejam
necessárias mais trocas.
E como aplicamos esse algoritmo na prática? Dessa forma:
Vamos por partes:
Primeiro definimos o array bagunçado:
Então fazemos a verificação responsável por trocar os itens caso o a (primeiro) seja
maior que o b (segundo):
tô com medo do
É isso aí galerinha do mal, acho que esses foram o conteúdos
abordados desde a última prova, tentei exemplificar da maneira
mais mastigada possível.