Skip to content

Commit 0c7debe

Browse files
committed
complete
1 parent 35603a1 commit 0c7debe

5 files changed

Lines changed: 103 additions & 11 deletions

File tree

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package org.launchcode;
2+
3+
import java.util.ArrayList;
4+
5+
public abstract class BaseDisc {
6+
7+
private String name;
8+
private int storageCapacity;
9+
private int remainingCapacity;
10+
private int capacityUsed;
11+
private String diskType;
12+
private ArrayList<String> contents;
13+
14+
public BaseDisc(String aName, int maxCapacity, String aType, int someUsedCapacity){
15+
name = aName;
16+
storageCapacity = maxCapacity;
17+
diskType = aType;
18+
capacityUsed = checkCapacity(someUsedCapacity);
19+
remainingCapacity = spaceLeft();
20+
}
21+
22+
private int checkCapacity(int dataWritten){
23+
if (storageCapacity < dataWritten){
24+
return storageCapacity;
25+
}
26+
return dataWritten;
27+
}
28+
29+
private int spaceLeft(){
30+
return storageCapacity - capacityUsed;
31+
}
32+
33+
public String diskInfo(){
34+
String output = String.format("\nDisk name: %s\nMax capacity: %d" +
35+
"\nSpace used: %d" +
36+
"\nAvailable space: %d\n", name, storageCapacity, capacityUsed, remainingCapacity);
37+
return output;
38+
}
39+
40+
public String writeData(int dataSize){
41+
if (dataSize > remainingCapacity){
42+
return "Not enough disc space!";
43+
}
44+
capacityUsed += dataSize;
45+
remainingCapacity -= dataSize;
46+
47+
return "Data written to disc. Remaining space = " + remainingCapacity;
48+
}
49+
50+
}
Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,20 @@
11
package org.launchcode;
22

3-
public class CD {
4-
// TODO: Implement your custom interface.
3+
public class CD extends BaseDisc implements OpticalDisc{
54

6-
// TODO: Determine which fields, methods, and constructors can be extended from the base class and which ones
7-
// need to be declared separately.
8-
}
5+
public CD(String aName, int maxCapacity, String aType, int someUsedCapacity) {
6+
super(aName, maxCapacity, aType, someUsedCapacity);
7+
}
8+
9+
@Override
10+
public void spinDisc() {
11+
System.out.println("A CD spins at a rate of 200 - 500 rpm.");
12+
}
13+
14+
15+
@Override
16+
public void readData() {
17+
System.out.println("Would you like to play a game?");
18+
}
19+
20+
}
Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
11
package org.launchcode;
22

3-
public class DVD {
4-
// TODO: Implement your custom interface.
3+
public class DVD extends BaseDisc implements OpticalDisc{
54

6-
// TODO: Determine which fields, methods, and constructors can be extended from the base class and which ones
7-
// need to be declared separately.
8-
}
5+
public DVD(String aName, int maxCapacity, String aType, int someUsedCapacity) {
6+
super(aName, maxCapacity, aType, someUsedCapacity);
7+
}
8+
9+
@Override
10+
public void spinDisc() {
11+
System.out.println("A DVD spins at a rate of 570 - 1600 rpm.");
12+
}
13+
14+
@Override
15+
public void readData() {
16+
System.out.println("I'm sorry, Dave. I'm afraid I can't do that.");
17+
}
18+
}

interfaces/studio/spinning-discs-studio/src/main/java/org/launchcode/Main.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,20 @@
33
public class Main {
44
public static void main(String[] args) {
55

6-
// TODO: Declare and initialize a CD and a DVD object.
6+
CD cd = new CD("CD example", 700, "CD-R", 350);
7+
DVD dvd = new DVD("DVD example", 4700, "DVD-R", 1450);
78

89
// TODO: Call each CD and DVD method to verify that they work as expected.
10+
cd.spinDisc();
11+
dvd.spinDisc();
12+
13+
cd.readData();
14+
dvd.readData();
15+
16+
System.out.println(cd.writeData(275));
17+
System.out.println(dvd.writeData(8000));
18+
19+
System.out.println(cd.diskInfo());
20+
System.out.println(dvd.diskInfo());
921
}
1022
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
package org.launchcode;
3+
4+
public interface OpticalDisc {
5+
// These methods are only suggestions.
6+
void spinDisc();
7+
void readData();
8+
}

0 commit comments

Comments
 (0)