d2jsp
Log InRegister
d2jsp Forums > Off-Topic > Computers & IT > Programming & Development > Need Java Hw Done > Paying 500 Fg
Prev12
Add Reply New Topic New Poll
Member
Posts: 22,264
Joined: Nov 23 2005
Gold: 117,286.68
Feb 5 2015 06:48am
Here it is please let me know if you can get it done before noon today:
http://www.filedropper.com/lab01b
Member
Posts: 22,264
Joined: Nov 23 2005
Gold: 117,286.68
Feb 5 2015 07:04am
package network; /* Package for class placement */

import javax.swing.JOptionPane;

/**
* Simple Java implementation of Shannon's Theorem based on
* CST8288 Lab01b handout originally by Reginald Dyer.
* @author FD
* @version 1.0.0 Jan 11, 2015
*/
public class ShannonsTheorem {

/**
* Bandwith in herz
*/
private double bandwidth;

/**
* Signal to Noise ratio in decibels
*/
private double signalToNoise;

/**
* Default constructor.
*/
public ShannonsTheorem(){
super();
}

/**
* Accessor for bandwidth field
* @return value for bandwidth (hertz)
*/
public double getBandwidth(){
return bandwidth;
}

/**
* Mutator for bandwidth field
* @param bandwidth in hertz
*/
public void setBandwidth(double bandwidth){
this.bandwidth = bandwidth;
}

/**
* Accessor for signalToNoise field
* @return value for signal to noise (decibels)
*/
public double getSignalToNoise(){
return signalToNoise;
}

/**
* Mutator for signalToNoise field
* @param signalToNoise in (decibels)
*/
public void setSignalToNoise(double signalToNoise){
this.signalToNoise = signalToNoise;
}

/**
* Accessor which generates value for Maximum Data Rate,
* based on bandwidth and signal to noise fields.
* @return Maximum Data Rate in bits per second (bps)
*/
public double getMaximumDataRate(){
return getMaximumDataRate(bandwidth, signalToNoise);
}

/**
* Converts this class into a meaningful string.
* @return Formats bandwidth, signalToNoise, and max data rate in a String
*/
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
builder.append("bandwidth=").append(bandwidth).append(" hz,");
builder.append(" signalToNoise=").append(signalToNoise).append(" db,");
builder.append(" maximumDataRate=")
.append(String.format("%.2f",getMaximumDataRate())).append(" bps]");
return builder.toString();
}


/**
* Private method which performs the actual calculation of max data rate,
* using Shannon's Theorem.
* @param bandwidth in hertz
* @param signalToNoise in decibels
* @return max data rate in bits per second (bps)
*/
private double getMaximumDataRate(double bandwidth, double signalToNoise){
return bandwidth * (Math.log(1+Math.pow(10, signalToNoise/10))/ Math.log(2));
}

/**
* Entry point "main()" as required by the JVM.
* @param args Standard command line parameters (arguments) as a
* string array. (Not used in this program).
*/
public static void main (String args[]) {
ShannonsTheorem app = new ShannonsTheorem();
try{
JOptionPane.showMessageDialog(null,
"Welcome to the Shannon's Theorem Java program",
"Welcome", JOptionPane.INFORMATION_MESSAGE);
double bandwidth = Double.parseDouble(
JOptionPane.showInputDialog("Please enter bandwidth (herz)"));
double signalToNoise = Double.parseDouble(
JOptionPane.showInputDialog(
"Please enter signal to noise ratio in decibals"));
app.setBandwidth(bandwidth);
app.setSignalToNoise(signalToNoise);
String message = String.format("Max data rate is %.2f %s",
app.getMaximumDataRate(), "bps");
JOptionPane.showMessageDialog(null,
message, "Shannon's Theorem Results",
JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
JOptionPane.showMessageDialog(null,
"Please enter only numbers when using this program",
"Problem", JOptionPane.ERROR_MESSAGE);
}
}

} /* End of CLASS: ShannonsTheorem.java */
Member
Posts: 1,995
Joined: Jun 28 2006
Gold: 7.41
Feb 5 2015 07:59am
Just woke up. Literally did this in 5 minutes. I don't have JUnit on my box, and need to get to work. I also don't have time to re-format your ShannonsTheorem class. But I refactored it:

Code
package network; /* Package for class placement */

import javax.swing.JOptionPane;

/**
* Simple Java implementation of Shannon's Theorem based on
* CST8288 Lab01b handout originally by Reginald Dyer.
* @author FD
* @version 1.0.0 Jan 11, 2015
*/
public class ShannonsTheorem {

/**
* Bandwith in herz
*/
private ShannonsModel model;

/**
* Signal to Noise ratio in decibels
*/
private double signalToNoise;

/**
* Default constructor.
*/
public ShannonsTheorem(){
super();
model = new ShannonsModel();
}

/**
* Accessor for bandwidth field
* @return value for bandwidth (hertz)
*/
public double getBandwidth(){
return model.getBandwidth();
}

/**
* Mutator for bandwidth field
* @param bandwidth in hertz
*/
public void setBandwidth(double bandwidth){
model.setBandwidth(bandwidth);
}

/**
* Accessor for signalToNoise field
* @return value for signal to noise (decibels)
*/
public double getSignalToNoise(){
return model.getSignalToNoise();
}

/**
* Mutator for signalToNoise field
* @param signalToNoise in (decibels)
*/
public void setSignalToNoise(double signalToNoise){
model.setSignalToNoise(signalToNoise);
}

/**
* Accessor which generates value for Maximum Data Rate,
* based on bandwidth and signal to noise fields.
* @return Maximum Data Rate in bits per second (bps)
*/
public double maximumDataRate(){
return model.maximumDataRate();
}





/**
* Entry point "main()" as required by the JVM.
* @param args Standard command line parameters (arguments) as a
* string array. (Not used in this program).
*/
public static void main (String args[]) {
ShannonsTheorem app = new ShannonsTheorem();
try{
JOptionPane.showMessageDialog(null,
"Welcome to the Shannon's Theorem Java program",
"Welcome", JOptionPane.INFORMATION_MESSAGE);
double bandwidth = Double.parseDouble(
JOptionPane.showInputDialog("Please enter bandwidth (herz)"));
double signalToNoise = Double.parseDouble(
JOptionPane.showInputDialog(
"Please enter signal to noise ratio in decibals"));
app.setBandwidth(bandwidth);
app.setSignalToNoise(signalToNoise);
String message = String.format("Max data rate is %.2f %s",
app.maximumDataRate(), "bps");
JOptionPane.showMessageDialog(null,
message, "Shannon's Theorem Results",
JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
JOptionPane.showMessageDialog(null,
"Please enter only numbers when using this program",
"Problem", JOptionPane.ERROR_MESSAGE);
}
}

} /* End of CLASS: ShannonsTheorem.java */



Code

package network;

public class ShannonsModel {
private double bandwidth, signalToNoise;

public ShannonsModel()
{
this.bandwidth = this.signalToNoise = 0.0;
}

public double getBandwidth()
{
return bandwidth;
}

public double getSignalToNoise()
{
return signalToNoise;
}

public double maximumDataRate()
{
return maximumDataRate(bandwidth, signalToNoise);
}


/**
* Private method which performs the actual calculation of max data rate,
* using Shannon's Theorem.
* @param bandwidth in hertz
* @param signalToNoise in decibels
* @return max data rate in bits per second (bps)
*/
private double maximumDataRate(double bandwidth, double signalToNoise){
return bandwidth * (Math.log(1+Math.pow(10, signalToNoise/10))/ Math.log(2));
}

public void setBandwidth(double bandwidth)
{
this.bandwidth = bandwidth;
}

public void setSignalToNoise(double signalToNoise)
{
this.signalToNoise = signalToNoise;
}

/**
* Converts this class into a meaningful string.
* @return Formats bandwidth, signalToNoise, and max data rate in a String
*/
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
builder.append("bandwidth=").append(bandwidth).append(" hz,");
builder.append(" signalToNoise=").append(signalToNoise).append(" db,");
builder.append(" maximumDataRate=")
.append(String.format("%.2f",maximumDataRate())).append(" bps]");
return builder.toString();
}



}


So, you should be able to write your JUnit tests. Just write a ShannonsTheoremTest which asserts that each method on that class does what it should. Expected output is the value of the equivalent method on the model. And a ShannonsModelTest class which has JUnit tests that do the same thing. The main thing here is that you assert that maximumDataRate actually calculates correctly.

This post was edited by Minkomonster on Feb 5 2015 08:06am
Member
Posts: 1,995
Joined: Jun 28 2006
Gold: 7.41
Feb 5 2015 04:51pm
Home from work. Decided to clean this up. Didn't do the java docs, because fuck them thats why.

Code
package network; /* Package for class placement */

import javax.swing.JOptionPane;

/**
* Simple Java implementation of Shannon's Theorem based on CST8288 Lab01b
* handout originally by Reginald Dyer.
*
* @author FD
* @version 1.0.0 Jan 11, 2015
*/
public class ShannonsTheorem {


private ShannonsModel model;

/**
* Default constructor.
*/
public ShannonsTheorem() {
super();
model = new ShannonsModel();
}

/**
* Accessor for bandwidth field
*
* @return value for bandwidth (hertz)
*/
public double getBandwidth() {
return model.getBandwidth();
}

/**
* Mutator for bandwidth field
*
* @param bandwidth
* in hertz
*/
public void setBandwidth(double bandwidth) {
model.setBandwidth(bandwidth);
}

/**
* Accessor for signalToNoise field
*
* @return value for signal to noise (decibels)
*/
public double getSignalToNoise() {
return model.getSignalToNoise();
}

/**
* Mutator for signalToNoise field
*
* @param signalToNoise
* in (decibels)
*/
public void setSignalToNoise(double signalToNoise) {
model.setSignalToNoise(signalToNoise);
}

/**
* Accessor which generates value for Maximum Data Rate, based on bandwidth
* and signal to noise fields.
*
* @return Maximum Data Rate in bits per second (bps)
*/
public double maximumDataRate() {
return model.maximumDataRate();
}

/**
* Entry point "main()" as required by the JVM.
*
* @param args
* Standard command line parameters (arguments) as a string
* array. (Not used in this program).
*/
public static void main(String args[]) {
ShannonsTheorem app = new ShannonsTheorem();
String tryAgain = "";
do
{


try {
JOptionPane.showMessageDialog(null,
"Welcome to the Shannon's Theorem Java program", "Welcome",
JOptionPane.INFORMATION_MESSAGE);
double bandwidth = Double.parseDouble(JOptionPane
.showInputDialog("Please enter bandwidth (herz)"));
double signalToNoise = Double
.parseDouble(JOptionPane
.showInputDialog("Please enter signal to noise ratio in decibals"));
app.setBandwidth(bandwidth);
app.setSignalToNoise(signalToNoise);
String message = String.format("Max data rate is %.2f %s",
app.maximumDataRate(), "bps");
JOptionPane.showMessageDialog(null, message,
"Shannon's Theorem Results",
JOptionPane.INFORMATION_MESSAGE);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,
"Please enter only numbers when using this program",
"Problem", JOptionPane.ERROR_MESSAGE);
}

tryAgain = JOptionPane.showInputDialog("Continue? Enter anything to continue. N or n to exit.");
}while(!tryAgain.toLowerCase().equals("n"));
}

} /* End of CLASS: ShannonsTheorem.java */


Code
package network;

public class ShannonsModel {
private double bandwidth, signalToNoise;

public ShannonsModel() {
this.bandwidth = this.signalToNoise = 0.0;
}

public double getBandwidth() {
return bandwidth;
}

public double getSignalToNoise() {
return signalToNoise;
}

public double maximumDataRate() {
return maximumDataRate(bandwidth, signalToNoise);
}

/**
* Private method which performs the actual calculation of max data rate,
* using Shannon's Theorem.
*
* @param bandwidth
* in hertz
* @param signalToNoise
* in decibels
* @return max data rate in bits per second (bps)
*/
private double maximumDataRate(double bandwidth, double signalToNoise) {
return bandwidth
* (Math.log(1 + Math.pow(10, signalToNoise / 10)) / Math.log(2));
}

public void setBandwidth(double bandwidth) {
this.bandwidth = bandwidth;
}

public void setSignalToNoise(double signalToNoise) {
this.signalToNoise = signalToNoise;
}

/**
* Converts this class into a meaningful string.
*
* @return Formats bandwidth, signalToNoise, and max data rate in a String
*/
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("[");
builder.append("bandwidth=").append(bandwidth).append(" hz,");
builder.append(" signalToNoise=").append(signalToNoise).append(" db,");
builder.append(" maximumDataRate=")
.append(String.format("%.2f", maximumDataRate()))
.append(" bps]");
return builder.toString();
}

}


Code
package networkTest;

import network.*;

import static org.junit.Assert.*;

import org.junit.Test;

public class ShannonsTheoremTest {

@Test
public void getBandwidthTest() {

double bandwidth;
ShannonsTheorem st;

st = new ShannonsTheorem();

bandwidth = st.getBandwidth();

assertTrue(bandwidth == 0.0);


st.setBandwidth(10.0);

bandwidth = st.getBandwidth();

assertTrue(bandwidth == 10.0);

}

@Test
public void setBandwidthTest() {

double bandwidth;
ShannonsTheorem st;

st = new ShannonsTheorem();

st.setBandwidth(10.0);

bandwidth = st.getBandwidth();

assertTrue(bandwidth == 10.0);

}

@Test
public void getSignalToNoiseTest() {

double signalToNoise;
ShannonsTheorem st;

st = new ShannonsTheorem();

signalToNoise = st.getSignalToNoise();

assertTrue(signalToNoise == 0.0);


st.setSignalToNoise(10.0);

signalToNoise = st.getSignalToNoise();

assertTrue(signalToNoise == 10.0);

}

@Test
public void setSignalToNoiseTest() {

double signalToNoise;
ShannonsTheorem st;

st = new ShannonsTheorem();

st.setSignalToNoise(10.0);

signalToNoise = st.getSignalToNoise();

assertTrue(signalToNoise == 10.0);

}

@Test
public void maximumDataRateTest() {

double maximumDataRate;
ShannonsTheorem st;

st = new ShannonsTheorem();

maximumDataRate = st.maximumDataRate();

assertTrue(maximumDataRate == 0.0);

st.setBandwidth(10.0);
st.setSignalToNoise(10.0);

maximumDataRate = st.maximumDataRate();
assertTrue(maximumDataRate == 34.59431618637298);

}

}


Code
package networkTest;

import network.*;

import static org.junit.Assert.*;

import org.junit.Test;

public class ShannonsModelTest {

@Test
public void getBandwidthTest() {

double bandwidth;
ShannonsModel sm;

sm = new ShannonsModel();

bandwidth = sm.getBandwidth();

assertTrue(bandwidth == 0.0);


sm.setBandwidth(10.0);

bandwidth = sm.getBandwidth();

assertTrue(bandwidth == 10.0);

}

@Test
public void setBandwidthTest() {

double bandwidth;
ShannonsModel sm;

sm = new ShannonsModel();

sm.setBandwidth(10.0);

bandwidth = sm.getBandwidth();

assertTrue(bandwidth == 10.0);

}

@Test
public void getSignalToNoiseTest() {

double signalToNoise;
ShannonsModel sm;

sm = new ShannonsModel();

signalToNoise = sm.getSignalToNoise();

assertTrue(signalToNoise == 0.0);


sm.setSignalToNoise(10.0);

signalToNoise = sm.getSignalToNoise();

assertTrue(signalToNoise == 10.0);

}

@Test
public void setSignalToNoiseTest() {

double signalToNoise;
ShannonsModel sm;

sm = new ShannonsModel();

sm.setSignalToNoise(10.0);

signalToNoise = sm.getSignalToNoise();

assertTrue(signalToNoise == 10.0);

}

@Test
public void maximumDataRateTest() {

double maximumDataRate;
ShannonsModel sm;

sm = new ShannonsModel();

maximumDataRate = sm.maximumDataRate();

assertTrue(maximumDataRate == 0.0);

sm.setBandwidth(10.0);
sm.setSignalToNoise(10.0);

maximumDataRate = sm.maximumDataRate();
assertTrue(maximumDataRate == 34.59431618637298);

}

@Test
public void toStringTest() {

String s;
ShannonsModel sm;

sm = new ShannonsModel();

s = sm.toString();

assertTrue(s.equals("[bandwidth=0.0 hz, signalToNoise=0.0 db, maximumDataRate=0.00 bps]"));

}

}



Unit tests could be better. But whatever.
Member
Posts: 2,757
Joined: Nov 26 2007
Gold: 1,214.81
Feb 5 2015 06:08pm
lol, love watching newbs write code. Take the necessary dozen lines of code and turn it into 100
Member
Posts: 1,995
Joined: Jun 28 2006
Gold: 7.41
Feb 5 2015 06:14pm
Quote (labatymo @ Feb 5 2015 07:08pm)
lol, love watching newbs write code. Take the necessary dozen lines of code and turn it into 100


You're a bit of an idiot aren't you? Condense all of that code into 12 lines, while still maintaining an OOP design using a semi-MVC pattern and the appropriate unit tests.
Go Back To Programming & Development Topic List
Prev12
Add Reply New Topic New Poll