
Dans un système d'identification de personnes pour une compagnie d'assurance.
Ajouter la notion de cartes d'identités gouvernementales.
S'assurer que la carte est "valide".
S'assurer que la personne est majeure.


function validatePerson(
firstName,
lastName,
dateOfBirth,
expiration,
healthInsuranceNumber,
driverLicenseNumber,
passportNumber,
dateOfDelivery
) {
// s'assurer que la carte d'identité soit valide
// s'assurer que la personne soit agée de 18 ans ou plus
}



const text = "Il aurait pu sans doute se procurer une installation plus commode, mais il appartenait à la catégorie des gens qui aiment à se rendre les conditions de la vie difficiles, pour avoir le droit d'être sombres et taciturnes";
const passage = text.substring(72, 170);
text.substring(72, 170);
// ^ le "point" indique que nous appelons une méthode de l'objet.
"pu sans doute se procurer une installation".includes("procurer");
"bonjour".concat(" monde");
" beaucoup d'espaces ".trim();
"woohoo".toUpperCase();

const drivingLicense = new DrivingLicense("paul",
"levesque",
"1985-11-24");
drivingLicense.isMajor();

class CoreId {
firstName;
lastName;
dateOfBirth
constructor(firstName,
lastName,
dateOfBirth) {
this.firstName = firstName;
this.lastName = lastName
this.dateOfBirth = dateOfBirth;
}
getName(){
return this.firstName + " " + this.lastName;
}
}
const coreId = new CoreId("didier", "amyot", "1985-11-17");
console.log(coreId.getName()); // didier amyot
function sayHello(coreId){ // nom de la class de l'objet a recevoir
console.log(coreId.getName());
}

class CoreId {
firstName;
lastName;
dateOfBirth
constructor(firstName,
lastName,
dateOfBirth) {
this.firstName = firstName;
this.lastName = lastName
this.dateOfBirth = dateOfBirth;
}
getName(){
return this.firstName + " " + this.lastName;
}
}
class Passport {
constructor(firstName,
lastName,
dateOfBirth,
passportNumber) {
this.firstName = firstName;
this.lastName = lastName
this.dateOfBirth = dateOfBirth;
this.passportNumber = passportNumber;
}
getName(): string{
return this.firstName + " " + this.lastName;
}
}
CoreId¶// typescript
function sayHello(tis){ // ne fonctionnera pas avec Passport
console.log(tis.getName());
}
// typescript
function sayHello(tis: Passport){ // ne fonctionnera pas avec CoreId
console.log(tis.getName());
}
class Passport extends CoreId {
passportNumber: string;
constructor(firstName: string,
lastName: string,
dateOfBirth: string,
passportNumber: string) {
super(firstName, lastName, dateOfBirth);
this.passportNumber = passportNumber;
}
}
CoreId sont hérités par PassportCoreId prennent aussi des Passport¶
...
...
L'héritage, c'est un peu ce qui définie la programmation orientée objet.
-- didier




Nous voullons créer une fonction isValid.
// dans CoreId
isValid() {
return true;
}
// dans Passport
isValid() {
return this.verifyPassportNumber() && this.verifyExpirationDate();
}
class CoreId {
isValid(): boolean{
return true;
}
}
class Passport extends CoreId {
isValid(): boolean{
return this.verifyPassportNumber() && this.verifyExpirationDate();
}
}
En programmation orientée objet, le principe ouvert/fermé (open/closed principle) affirme qu'une classe doit être à la fois ouverte (à l'extension) et fermée (à la modification).
-- Bertrand Meyer
