JavaScript
Børre Stenseth
OOP > Arv >Eksempel3

Arv og klassestruktur

Hva

Samme mønster som i eksempel 2, men her lar vi person være en abstrakt klasse, og vi sender ingen parametere til Person ved konstruksjon av subklassene.

Vi lager følgende Konstruksjon

_test3.js
// global list of persons
var pList=[];
// consider person as an abstract klasse
function Person(){
    this.navn;
    this.faar;
    this.getNavn=function(){return this.navn}
    this.getAlder=function(){
        return new Date().getFullYear()-this.faar
    }
}
function Student(navn,faar,linje){
    // implisitt prototyping, no parameters
    Person.apply(this);
    this.navn=navn;
    this.faar=faar;
    this.linje=linje;
    this.getLinje=function(){return this.linje};
}
function Professor(navn,faar,fakultet){
    // implisitt prototyping, no parameters
    Person.apply(this);
    this.navn;
    this.faar=faar;
    this.fakultet=fakultet;
    this.getFakultet=function(){return this.fakultet}
}
function displayList(dumpid){
    var dmp=document.getElementById(dumpid);
    S="";
    for(var ix=0;ix < pList.length;ix++){
        var p=pList[ix];
        S+=p.getNavn();
        if(p instanceof Student)
            S+=", studerer "+p.getLinje();
        if(p instanceof Professor)
            S+=", ansatt ved "+p.getFakultet();
        S+=",  alder: "+p.getAlder();
        S+="<br/>";
    }
    dmp.innerHTML=S;
}

Så lager vi en serie objekter.

pList.push(new Student("Pedersen",1985,"Informatikk"));
pList.push(new Student("Hansen",1990,"Matematikk"));
pList.push(new Professor("Berg",1970,"Avdeling for IT"));
pList.push(new Student("Holm",1990,"Økonomi"));
OOP > Arv >Eksempel3