|
@@ -10,11 +10,11 @@ class UniversityLibrarian implements Librarian {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-class ReferenceItem {
|
|
|
|
|
|
+abstract class ReferenceItem {
|
|
static department = 'Research';
|
|
static department = 'Research';
|
|
private _publisher: string;
|
|
private _publisher: string;
|
|
|
|
|
|
- constructor(public title: string, protected year: number) {
|
|
|
|
|
|
+ constructor(public title: string, protected year?: number) {
|
|
}
|
|
}
|
|
|
|
|
|
printItem(): void {
|
|
printItem(): void {
|
|
@@ -29,6 +29,8 @@ class ReferenceItem {
|
|
set publisher(p: string) {
|
|
set publisher(p: string) {
|
|
this._publisher = p;
|
|
this._publisher = p;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ abstract printCitation(): void;
|
|
}
|
|
}
|
|
|
|
|
|
class Encyclopedia extends ReferenceItem {
|
|
class Encyclopedia extends ReferenceItem {
|
|
@@ -40,6 +42,10 @@ class Encyclopedia extends ReferenceItem {
|
|
super.printItem();
|
|
super.printItem();
|
|
console.log(`Edition: ${this.edition} (${this.year}).`);
|
|
console.log(`Edition: ${this.edition} (${this.year}).`);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ printCitation(): void {
|
|
|
|
+ console.log(`${this.title} - ${this.year}.`);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
class Journal extends ReferenceItem {
|
|
class Journal extends ReferenceItem {
|
|
@@ -49,6 +55,9 @@ class Journal extends ReferenceItem {
|
|
super(title, year);
|
|
super(title, year);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ printCitation(): void {
|
|
|
|
+ console.log(`${this.title} - ${JSON.stringify(this.contributors)}.`);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
-export { Encyclopedia, ReferenceItem, UniversityLibrarian };
|
|
|
|
|
|
+export { Encyclopedia, Journal, ReferenceItem, UniversityLibrarian };
|