Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta name="viewport" content="width=device-width">
- <title>JS Bin</title>
- </head>
- <body>
- <script id="jsbin-javascript">
- "use strict";
- // this is some practice with "classes" in JS
- // create my 'parent class'
- class Store {
- constructor(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits) {
- this._storeName = storeName;
- this._locationNumber = locationNumber;
- this._additionalWaterUnits = additionalWaterUnits;
- this._additionalElectricityUnits = additionalElectricityUnits;
- this._baseRent = 900;
- this._waterUnitPrice = 40;
- this._electricUnitPrice = 90;
- this._accessToMainFacility = true;
- }
- get storeName() {
- return this._storename;
- }
- get locationNumber(){
- return this._locationNumber;
- }
- get additionalWaterUnits() {
- return this._additionalWaterUnits;
- }
- get additionalElectricityUnits() {
- return this._additionalElectricityUnits;
- }
- revokeAccessToMainFacility() {
- this._accessToMainFacility = false;
- }
- instateAccessToMainFacility() {
- this._accessToMainFacility = true;
- }
- calculateTotalRent() {
- return this._baseRent + (this._waterUnitPrice * this._additionalWaterUnits) + (this._electricUnitPrice * this._additionalElectricityUnits);
- }
- printTotalRent() {
- console.log('Rent for ' + this._storeName + ':' + '\n Base rent: $' + this._baseRent.toFixed(2) + '\n ' + this._additionalWaterUnits + ' additional water units at $' + this._waterUnitPrice.toFixed(2) + ' per unit \n ' + this._additionalElectricityUnits + ' additional electric units at $' + this._electricUnitPrice.toFixed(2) + ' per unit \n Total rent: $' + this.calculateTotalRent().toFixed(2));
- }
- facilityManagerView() {
- let permitsValid;
- let inspectionsCurrent;
- let securityAccess;
- if (this.arePermitsValid === undefined){
- permitsValid = 'not applicable'
- }
- else {
- permitsValid = this.arePermitsValid;
- }
- if (this.areInspectionsCurrent === undefined){
- inspectionsCurrent = 'not applicable';
- }
- else{
- inspectionsCurrent = this.areInspectionsCurrent;
- }
- if (this._accessToMainFacility === true) {
- securityAccess = 'Granted';
- }
- else {
- securityAccess = 'Restricted'
- }
- console.log(this._storeName + ' (location number ' + this._locationNumber + '): \n Security access: ' + securityAccess + '\n Total Rent: $' + this.calculateTotalRent().toFixed(2) + '\n Permits Valid: ' + permitsValid + '\n Inspections Current: ' + inspectionsCurrent);
- }
- }
- class RetailStore extends Store {
- constructor(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits){
- super(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits);
- }
- }
- class FoodSales extends Store {
- constructor(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits, permitsAsArray, numberOfAnnualInspections){
- super(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits);
- this._permitsAsArray = permitsAsArray;
- this._numberOfAnnualInspections = numberOfAnnualInspections;
- this._arePermitsValid = true;
- this._areInspectionsCurrent = true;
- }
- get permitsAsArray() {
- return this._permitsAsArray;
- }
- get numberOfAnnualInspections() {
- return this._numberOfAnnualInspections;
- }
- get arePermitsValid() {
- return this._arePermitsValid;
- }
- get areInspectionsCurrent() {
- return this._areInspectionsCurrent;
- }
- invalidPermits() {
- this._arePermitsValid = false;
- }
- allPermitsValid() {
- this._arePermitsValid = true;
- }
- inspectionsNotCurrent() {
- this._areInspectionsCurrent = false;
- }
- allInspectionsCurrent() {
- this._areInspectionsCurrent = true;
- }
- requiredPermits() {
- let permitString = '';
- for (let i = 0; i < this._permitsAsArray.length; ++i) {
- permitString = permitString + this._permitsAsArray[i];
- if (i < this._permitsAsArray.length - 1) {
- permitString = permitString + ', ';
- }
- }
- console.log('Required permits for ' + this._storeName + ': ' + permitString);
- }
- }
- const coolElectronics = new RetailStore('Cool Electronics', 302, 0, 4);
- // coolElectronics.printTotalRent();
- // coolElectronics.facilityManagerView();
- coolElectronics.revokeAccessToMainFacility();
- // coolElectronics.facilityManagerView();
- coolElectronics.instateAccessToMainFacility();
- coolElectronics.facilityManagerView();
- const yummyNoms = new FoodSales('Yummy Noms', 222, 2, 1, ['Hot Fryer Permit', 'Large Dishwasher Permit'], 4);
- // yummyNoms.printTotalRent();
- yummyNoms.invalidPermits();
- yummyNoms.allPermitsValid();
- yummyNoms.inspectionsNotCurrent();
- yummyNoms.allInspectionsCurrent();
- yummyNoms.facilityManagerView();
- yummyNoms.requiredPermits();
- const youNeedABurrito = new FoodSales('You Need a Burrito', 108, 1, 1, ['Spicy Ingredient Permit'], 4);
- youNeedABurrito.inspectionsNotCurrent();
- youNeedABurrito.invalidPermits();
- youNeedABurrito.facilityManagerView();
- youNeedABurrito.requiredPermits();
- const genericAsianPandaDragonBuddhaName = new FoodSales('Generic Asian Panda Dragon Buddha Name', 145, 1, 0, ['Spicy Ingredient Permit', 'Hot Fryer Permit', 'Potential for Cat Meat Permit']);
- genericAsianPandaDragonBuddhaName.facilityManagerView();
- genericAsianPandaDragonBuddhaName.requiredPermits();
- </script>
- <script id="jsbin-source-javascript" type="text/javascript">"use strict";
- // this is some practice with "classes" in JS
- // create my 'parent class'
- class Store {
- constructor(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits) {
- this._storeName = storeName;
- this._locationNumber = locationNumber;
- this._additionalWaterUnits = additionalWaterUnits;
- this._additionalElectricityUnits = additionalElectricityUnits;
- this._baseRent = 900;
- this._waterUnitPrice = 40;
- this._electricUnitPrice = 90;
- this._accessToMainFacility = true;
- }
- get storeName() {
- return this._storename;
- }
- get locationNumber(){
- return this._locationNumber;
- }
- get additionalWaterUnits() {
- return this._additionalWaterUnits;
- }
- get additionalElectricityUnits() {
- return this._additionalElectricityUnits;
- }
- revokeAccessToMainFacility() {
- this._accessToMainFacility = false;
- }
- instateAccessToMainFacility() {
- this._accessToMainFacility = true;
- }
- calculateTotalRent() {
- return this._baseRent + (this._waterUnitPrice * this._additionalWaterUnits) + (this._electricUnitPrice * this._additionalElectricityUnits);
- }
- printTotalRent() {
- console.log('Rent for ' + this._storeName + ':' + '\n Base rent: $' + this._baseRent.toFixed(2) + '\n ' + this._additionalWaterUnits + ' additional water units at $' + this._waterUnitPrice.toFixed(2) + ' per unit \n ' + this._additionalElectricityUnits + ' additional electric units at $' + this._electricUnitPrice.toFixed(2) + ' per unit \n Total rent: $' + this.calculateTotalRent().toFixed(2));
- }
- facilityManagerView() {
- let permitsValid;
- let inspectionsCurrent;
- let securityAccess;
- if (this.arePermitsValid === undefined){
- permitsValid = 'not applicable'
- }
- else {
- permitsValid = this.arePermitsValid;
- }
- if (this.areInspectionsCurrent === undefined){
- inspectionsCurrent = 'not applicable';
- }
- else{
- inspectionsCurrent = this.areInspectionsCurrent;
- }
- if (this._accessToMainFacility === true) {
- securityAccess = 'Granted';
- }
- else {
- securityAccess = 'Restricted'
- }
- console.log(this._storeName + ' (location number ' + this._locationNumber + '): \n Security access: ' + securityAccess + '\n Total Rent: $' + this.calculateTotalRent().toFixed(2) + '\n Permits Valid: ' + permitsValid + '\n Inspections Current: ' + inspectionsCurrent);
- }
- }
- class RetailStore extends Store {
- constructor(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits){
- super(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits);
- }
- }
- class FoodSales extends Store {
- constructor(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits, permitsAsArray, numberOfAnnualInspections){
- super(storeName, locationNumber, additionalWaterUnits, additionalElectricityUnits);
- this._permitsAsArray = permitsAsArray;
- this._numberOfAnnualInspections = numberOfAnnualInspections;
- this._arePermitsValid = true;
- this._areInspectionsCurrent = true;
- }
- get permitsAsArray() {
- return this._permitsAsArray;
- }
- get numberOfAnnualInspections() {
- return this._numberOfAnnualInspections;
- }
- get arePermitsValid() {
- return this._arePermitsValid;
- }
- get areInspectionsCurrent() {
- return this._areInspectionsCurrent;
- }
- invalidPermits() {
- this._arePermitsValid = false;
- }
- allPermitsValid() {
- this._arePermitsValid = true;
- }
- inspectionsNotCurrent() {
- this._areInspectionsCurrent = false;
- }
- allInspectionsCurrent() {
- this._areInspectionsCurrent = true;
- }
- requiredPermits() {
- let permitString = '';
- for (let i = 0; i < this._permitsAsArray.length; ++i) {
- permitString = permitString + this._permitsAsArray[i];
- if (i < this._permitsAsArray.length - 1) {
- permitString = permitString + ', ';
- }
- }
- console.log('Required permits for ' + this._storeName + ': ' + permitString);
- }
- }
- const coolElectronics = new RetailStore('Cool Electronics', 302, 0, 4);
- // coolElectronics.printTotalRent();
- // coolElectronics.facilityManagerView();
- coolElectronics.revokeAccessToMainFacility();
- // coolElectronics.facilityManagerView();
- coolElectronics.instateAccessToMainFacility();
- coolElectronics.facilityManagerView();
- const yummyNoms = new FoodSales('Yummy Noms', 222, 2, 1, ['Hot Fryer Permit', 'Large Dishwasher Permit'], 4);
- // yummyNoms.printTotalRent();
- yummyNoms.invalidPermits();
- yummyNoms.allPermitsValid();
- yummyNoms.inspectionsNotCurrent();
- yummyNoms.allInspectionsCurrent();
- yummyNoms.facilityManagerView();
- yummyNoms.requiredPermits();
- const youNeedABurrito = new FoodSales('You Need a Burrito', 108, 1, 1, ['Spicy Ingredient Permit'], 4);
- youNeedABurrito.inspectionsNotCurrent();
- youNeedABurrito.invalidPermits();
- youNeedABurrito.facilityManagerView();
- youNeedABurrito.requiredPermits();
- const genericAsianPandaDragonBuddhaName = new FoodSales('Generic Asian Panda Dragon Buddha Name', 145, 1, 0, ['Spicy Ingredient Permit', 'Hot Fryer Permit', 'Potential for Cat Meat Permit']);
- genericAsianPandaDragonBuddhaName.facilityManagerView();
- genericAsianPandaDragonBuddhaName.requiredPermits();</script></body>
- </html>
Add Comment
Please, Sign In to add comment