Classes - POO (JavaScript + Lógica de programação) Flashcards
Paradigma
Toda linguangem de programação tem um paradigma.
È como se encontra de alguma classificação (“conforme suas funcionalidades e como permite que nós estruturemos o nosso código.”)
Diversas linguagens possui
vários paradigmas
(Orientado a objeto
Orientação a Evento
Funcional e outros)
POO / OPP
POO vem de programação orientada a objetos
OOP Object Oriented programming
- Tem idea de abstrair, dentro do código, objeto do mundo real
- Permite que os objetos interajam entre si através da troca de mensagens
- A base são as Classes e os Objetos
- OS objetos nós já estamos vendo desde o módulo anterior
Construtores e instâncias
Quando dizemos que uma classe foi instanciada estamos dizendo que um objeto foi criado a partir daquela classe.
A classe vêm com método especial que chamamos de construtor.
Utilizamos para definir valores iniciais dos atributos de um objeto.
Este método é chamado quando criamos uma instância de uma classe com a palavra.
Método construtor e instancia com uma class chamada new
class typeCars {
constructor(brand, name, quantity){
this.brand = brand
this.name = name
this.quantity = quantity
}
}
let bmw = new typeCars(“BMW”, “M4”, 23)
let fiat = new typeCars(“Fiat”, “Cronos”, 32)
let landRover = new typeCars(“Land Rover”, “Discovery”, 21)
console.log(bmw,fiat,landRover)
Métodos(class)
class spaceShip {
constructor(name){
this.name = name
this.velocity = 0
}
speedUp(acceleration) { this.velocity += acceleration }
}
let artemis = new spaceShip(“Artemis”)
artemis.speedUp(20)
artemis.speedUp(12)
console.log(artemis)
Associando classes
class captain{
constructor(name, age, flightHours){
this.name = name
this.age = age
this.flightHours = flightHours
}
}
class spaceShip {
constructor(name, crewQuantity, captainName, captainAge, captainFlight){
this.name = name
this.crewQuantity = crewQuantity
this.captain = new captain(captainName, captainAge, captainFlight)
}
}
let spaceship = new spaceShip(“Skyline”, 30, “Willian weber”, 42, 60000)
console.log(spaceship)
get e set
São métodos que a gente pode simular variáveis quando queremos formatar valores.
SET
É utilizado para atribuir um valor numa variável.
class transportSpacehip{
constructor(name){
this.name = name
this.currentVelocity = 120
}
set(newVelocity){ if(newVelocity > 120){ this.currentVelocity = 120 }else{ this.currentVelocity = newVelocity } } }
let spaceShip = new transportSpacehip(“Transportador”)
spaceShip.velocity = 130
console.log(spaceShip)
GET
É utilizado para retornar um valor com uma variável.
class resourceProcesserStation{
constructor(name, monthlyProcessedLoad){
this.name = name
this.monthlyProcessedLoad = monthlyProcessedLoad
}
get weeklyProcessedLoad() { return this.monthlyProcessedLoad / 4 } }
let resourceprocess = new resourceProcesserStation(“Gaia”, 500)
console.log(resourceprocess.weeklyProcessedLoad)
resourceprocess.monthlyProcessedLoad = 600
console.log(resourceprocess.weeklyProcessedLoad)
Métodos estáticos
são funções utilitárias, como funções para criar ou clonar objetos.
class resourceProcessStation {
constructor(name, mothLyProcessing){
this.name = name
this.mothLyProcessing = mothLyProcessing
}
static calculateProcessHours(mothLyProcessing, hours) {
return mothLyProcessing / 720 * hours
}
}
let processor = new resourceProcessStation(“Galeão”, 2000)
let totolProcessed = resourceProcessStation.calculateProcessHours(processor.mothLyProcessing, 10)
console.log(totolProcessed)
variáveis e estáticos
são ligados diretamente na classe.
class spaceship{
static get decelerationRate() {
return 0.15
}
constructor(name){
this.name = name
this.currentVelocity = 0
}
speedUp(acceleration){
this.currentVelocity += (acceleration * (1 - spaceship.decelerationRate))
}
}
let space = new spaceship(“Apollo”)
space.speedUp(100)
console.log(space)
Exceções
São erros que ocorrem no código.
São capturados em tempo de execução(runtime)
podem ser tratados para que o código não quebre.
No javascript, as exceçoes são lançadas pela classe error.
Podemos utilizar o try e catch para poder tratar esses errors.
Assim como podemos lançar nossos próprios erros
(Utilizamos o throw)
Cláusula throw
Criar nossos próprios erros.
class spaceshipWeapons {
constructor(identifier) {
this.identifier = identifier
this.shotsLeft = 5
}
shoot() { if(this.shotsLeft > 0) { console.log("TIRO") this.shotsLeft -= 1 } else { throw new Error(`Arma ${this.identifier} sem munição `) } } }
let fenixWeapon = new spaceshipWeapons(10)
fenixWeapon.shoot()
fenixWeapon.shoot()
fenixWeapon.shoot()
fenixWeapon.shoot()
fenixWeapon.shoot()
fenixWeapon.shoot()
console.log(fenixWeapon)
try, catch and finally
Criado para tratar exceções. Este conjunto atua capturando as possíveis exceções em seu código e, com o objetivo de impedir fluxos inesperados.
class spaceWeapons {
constructor(identifie) {
this.identifie = identifie
this.shotsWeapons = 5
}
shot() { if(this.shotsWeapons > 0) { console.log("Arma " + this.identifie + "Tiros") this.shotsWeapons -= 1 } else { throw new Error("No more bullets available") } } reload() { this.shotsWeapons = 5 } }
let Fenixweapons = new spaceWeapons(“Fenix”)
try {
Fenixweapons.shot()
Fenixweapons.shot()
Fenixweapons.shot()
Fenixweapons.shot()
Fenixweapons.shot()
Fenixweapons.shot()
} catch(e) {
console.log(e.message)
Fenixweapons.reload()
} finally {
console.log(“you shot too much!!”)
}
console.log(Fenixweapons)