Antecessor e sucessor de um número qualquer (OOP)
Exercício de lógica de programação resolvido cujo objetivo é encontrar o sucessor e antecessor de um número qualquer.
Exercício de lógica de programação
Seu objetivo é construir uma classe denominada Calc
com duas funções.
A primeira função mostrará o antecessor de um número qualquer.
A segunda função mostrará o sucessor de um número qualquer.
Linguagem C++
#include <iostream>
#include <assert.h>
//
// Classe Calc
//
class Calc {
public:
// retorna o antecessor de um número
int antecessor(int num) {
//
// sua lógica
//
}
// retorna o sucessor de um número
int sucessor(int num) {
//
// sua lógica
//
}
};
//
// Testes unitários...
//
void testAntecessor() {
Calc c;
assert(9 == c.antecessor(10));
}
void testSucessor() {
Calc c;
assert(11 == c.sucessor(10));
}
// ...fim dos testes.
//
// Início do programa
//
int main() {
testAntecessor();
testSucessor();
return 0;
}
Solução na linguagem C++
//
// Classe Calc
//
class Calc {
public:
// retorna o antecessor de um número
int antecessor(int num) {
// sua lógica
return num - 1;
}
// retorna o sucessor de um número
int sucessor(int num) {
// sua lógica
return num + 1;
}
};
Linguagem JavaScript
Em JavaScript eu resolvi utilizar a notação de objeto literal.
O que isso significa? Significa que não iremos instanciar classe alguma, repare que temos um objeto literal e não uma “classe literal”.
var assert = require('assert');
//
// Um objeto literal
//
var Calc = {
// Método
antecessor: function(num){
//
// sua lógica
//
}, // reparou na vírgula ?
// Método
sucessor: function(num){
//
// sua lógica
//
}
}
try {
assert.equal(9, Calc.antecessor(10));
assert.equal(11, Calc.sucessor(10));
} catch(e) {
console.log(e);
}
Solução na linguagem JavaScript
//
// Um objeto literal
//
var Calc = {
// Método
antecessor: function(num){
//
// sua lógica
//
return num - 1;
}, // reparou na vírgula ?
// Método
sucessor: function(num){
//
// sua lógica
//
return num + 1;
}
}
Linguagem Python
Em Python eu farei um paralelo, procurarei não instanciar a classe. Será possível? Sim, pois em Python temos:
- os atributos do objeto e
- os atributos da classe.
Em nosso exemplo, estamos utilizando os atributos da classe, isso se assemelha um pouco as variáveis estáticas em outras linguagens, mas não o são. Variáveis estáticas em Python tomam outro caminho.
# -*- coding: utf-8 -*-
class Calc(object):
def antecessor(num):
return num - 1
def sucessor(num):
return num + 1
assert 9 == Calc.antecessor(10)
assert 11 == Calc.sucessor(10)