Hi everyone!
I'm using a super class (DVD.java) that handles another class (EnhancedDVD.ja va). I want to pass the "details" of the DVD into the super class DVD.java. The super class contains the Title, RegionCode, Format, and Length of a dummy DVD...let's say..."Forrest Gump." But I can't figure out how to do this and I have 4 errors going on when I compile the two classes. I have a driver that runs the System.out.prin tln's. But I think it might be handling the classes wrongly as well. Any help? What am I doing wrong?
I want to take this one step at a time. First I'd like to just print out the "details" of the DVD, not worrying about the toString method in the DVD.java class.
But anyways...here' s my code for the two classes and the driver. I'll bold where my errors exist, they exist in the ENHANCEDDVD.jav a class...i have 3 errors
DVD.java class
-------------------------------------------------------------------------------------------------------- - /*
-
* File: DVD.java
-
* Author:
-
* Vers: 1.0.0.0, 1/31/2008, jdm - Initial coding
-
* Vers: 1.0.0.1, 2/19/2008, jdm - modified for TUI
-
* Vers. 1.0.0.2, 2/28/2008, jdm - modified for super class
-
* Desc: This program models a DVD in several ways.
-
*/
-
-
/**
-
* Beginning of the DVD class
-
*/
-
public class DVD
-
{
-
public static final int REGION_FREE = 0; // Final variable for the DVD region_free code
-
public static final int NTSC_FORMAT = 1; // Final variable for the DVD NTSC_format
-
public static final int PAL_FORMAT = 2; // Final variable for the DVD PAL_format
-
public static final int DVD_SECTOR_SIZE = 2048; // Final variable for the DVD sector size
-
public static final int DATA_RATE = 4096 * 1000; // Final variable for the DVD sector size in bytes
-
-
public static int serialNumberDVD = 0; // int static variable for the DVD serial number
-
public static int region; // int variable for the DVD region
-
public static int format; // int variable for the DVD format
-
public static String title; // String variable for the DVD title
-
public static double length = 0.0; // double variable for the DVD length in minutes
-
-
private int sectorNumber = 0; // int variable for the DVD length in minutes
-
-
/**
-
* Constructor: builds the DVD object
-
*/
-
public DVD(String title, int region, int format, double length)
-
{
-
this.title = title; // initialization of title
-
this.region = region; // initialization of region
-
this.format = format; // initialization of format
-
this.length = length; // initialization of length
-
-
serialNumberDVD = serialNumberDVD + 1; // increments the serial number
-
}
-
-
//Queries:-----------------------------------------
-
-
/**
-
* Query: getClassAuthor
-
*/
-
public static String getClassAuthor() // returns name of class’ author (my name)
-
{
-
return " my name " + "\n"; // returns my name
-
}
-
-
/**
-
* Query: returns the DVD sector number
-
*/
-
public long getSectorNumber(double minutes)
-
{
-
long bytesToGoThrough = (long)(minutes * 60 * DATA_RATE) / 8; // converts to bits
-
long sectorNumber = bytesToGoThrough / DVD_SECTOR_SIZE + 1024; // computes the sector size of the DVD
-
return sectorNumber; // returns the sector number
-
}
-
-
/**
-
* Query: returns the DVD serial number
-
*/
-
public static int getSerialNumberDVD()
-
{
-
return serialNumberDVD; // returns the serial number
-
}
-
-
/**
-
* Query: returns the DVD title
-
*/
-
public static String getTitle()
-
{
-
if (region >= 0 && region <= 8) // conditional AND statement
-
{
-
return title; // return DVD title
-
}
-
else
-
{
-
return "Bad Region Code"; // return Bad Region Code
-
}
-
}
-
-
/**
-
* Query: returns the DVD region
-
*/
-
public int getRegion()
-
{
-
return region; // returns the DVD region
-
}
-
-
/**
-
* Query: returns the DVD format
-
*/
-
public int getFormat()
-
{
-
return format; // returns the DVD format
-
}
-
-
/**
-
* Query: returns the DVD length
-
*/
-
public double getLength()
-
{
-
return length; // returns the DVD length
-
}
-
-
//Commands:--------------------------------------------
-
-
/**
-
* Command: toString
-
*/
-
public String toString() // returns a text representation of all the data pertaining to a given
-
// DVD: "serial number, title, region, format, length."
-
{
-
// return of the full DVD printable object - formatted as a form
-
// (properly formatted for display, and without the quotes).
-
return "\n" + "Serial Number: " + getSerialNumberDVD() + "\n" +
-
"Title: " + getTitle() + "\n" +
-
"Region Code: " + getRegion() + "\n" +
-
"Format: " + getFormat() + "\n" +
-
"Length: " + getLength();
-
}
-
}
EnhancedDVD.jav a
------------------------------------------------------------------------------------------------------ - /*
-
* File: EnhancedDVD.java
-
* Author:
-
* Vers: 1.0.0.0, 3/4/2008, jdm - Initial coding
-
* Desc: This class gathers "details" for a DVD
-
*/
-
-
/**
-
* Beginning of the EnhancedDVD class.
-
*/
- public class EnhancedDVD implements DVD
-
{
-
public String dvdDetails = ""; // string DVD details
-
/**
-
* Constructor: EnhancedDVD constructor that passes in the initial DVD details (dvdDetails).
-
*/
-
public EnhancedDVD(String title, int region, int format, double length, String dvdDetails)
-
{
-
super(title, region, format, length); // passes the dvdDetails into the EnhancedDVD constructor this.dvdDetails = dvdDetails; // assign this dvdDetails to dvdDetails
-
}
-
-
// --------------- Beginning of queries ---------------------------
-
-
/**
-
* Query: getdvdDetails
-
*/
-
public String getDetails()
-
{
-
return dvdDetails; // return of the DVD's details
-
}
-
-
// --------------- Beginning of commands ---------------------------
-
-
/**
-
* Command: setDVDDetails
-
*/
-
public static void setDetails(String DetailsOfDVD)
-
{
-
this.dvdDetails = DetailsofDVD; // sets the DVD's details
-
}
-
-
public String toString() // returns a text representation of all the data pertaining to a given
-
// DVD's details: stars of the movie, movie rating, genre, basic plot, etc., etc.,
-
{
-
// return of the details of the DVD printable object - formatted as a form
-
// (properly formatted for display, and without the quotes).
-
return "\n" + "Details: " + getDetails();
-
}
-
}
Driver class
---------------------------------------------------------------------------------------------------------- - /*
-
* File: Driver5.java
-
* Author:
-
* Vers: 1.0.0.0, 2/28/2008, jdm - Initial coding
-
* Desc: This is a driver for the program
-
*/
-
-
public class Driver5 {
-
-
public static void main(String[] args) {
-
-
System.out.println("Spring 2008 P5 by " + DVD.getClassAuthor()); // print my name as author
-
-
EnhancedDVD newDVD = new EnhancedDVD("Forrest Gump", 1, DVD.NTSC_FORMAT, 200.); // creates the newDVD object
-
EnhancedDVD.setDetails("Stars: Tom Hanks, Robin White" + "\n" +
-
"Rating: PG-13" + "\n" +
-
"Genre: Drama" + "\n" +
-
"Plot: The title character leads viewers through an accidental" + "\n" +
-
"travelogue of American social history from the early 1960s" + "\n" +
-
"through the present in this revisionist fable.");
-
-
//System.out.println(newdvd); // print dvd
-
-
//System.out.println("Last Sectors:"); // print DVD sectors
-
//System.out.println("For \"" + dvd.getTitle() + "\": " +
-
// dvd.getSectorNumber(dvd.getLength())); // print dvd1 sectors
-
-
System.out.println(newDVD); // print the details of the DVD
-
}
-
}
6 2142 BigDaddyLH 1,216
Recognized Expert Top Contributor
I didn't look at your code too closely because as soon as I started reading, I saw that you have some basic misconceptions. Do you understand "static"?
What is the difference between a static field and a non-static (instance) field?
How does one determine which to use?
There are basic questions and you not should write another line of code until you can answer these questions without hesitation.
I didn't look at your code too closely because as soon as I started reading, I saw that you have some basic misconceptions. Do you understand "static"?
What is the difference between a static field and a non-static (instance) field?
How does one determine which to use?
There are basic questions and you not should write another line of code until you can answer these questions without hesitation.
don't you use static if you want to KEEP something from changing? The things I have made static are that way for a reason. If i delete the static assignment I get MORE errors. Also, for other concepts...use public and private if you want to be able to reference the instance variables via their respective class from other classes
BigDaddyLH 1,216
Recognized Expert Top Contributor
don't you use static if you want to KEEP something from changing?
No, I'm afraid that's got absolutely nothing to do with the keyword static. You should review the language basics. Here is a page from Sun's tutorial that talks about static: http://java.sun.com/docs/books/tutor...classvars.html
The things I have made static are that way for a reason. If i delete the static assignment I get MORE errors.
I'm afraid that's not a reason. That's voodoo. Just because one error leads you to make more errors doesn't make any of the errors, uh, not an error.
What you need to do is understand static then use it where it's needed and don't use it where it's wrong to use it.
My rule of thumb is to almost never use it, except for three spots:
1. You program's main method is required to be static
2. Constants can be static: - public static final int DALMATIONS = 101;
3. Utility classes like java.lang.Math can have static methods (sqrt, sin, cos, ...)
No, I'm afraid that's got absolutely nothing to do with the keyword static. You should review the language basics. Here is a page from Sun's tutorial that talks about static: http://java.sun.com/docs/books/tutor...classvars.html
I'm afraid that's not a reason. That's voodoo. Just because one error leads you to make more errors doesn't make any of the errors, uh, not an error.
What you need to do is understand static then use it where it's needed and don't use it where it's wrong to use it.
My rule of thumb is to almost never use it, except for three spots:
1. You program's main method is required to be static
2. Constants can be static: - public static final int DALMATIONS = 101;
3. Utility classes like java.lang.Math can have static methods (sqrt, sin, cos, ...)
I appreciate you pointing me in the right direction BigDaddyLH. i understand where i need to be going. I've actually changed my code a good bit since my last post now that I am in the right mindset! I changed my code to now look like this...however, I'm getting 1 other error...you are absolutely right about errors.
The error is in my EnhancedDVD.jav a class on line 33 (this.dvdDetail s = DetailsOfDVD; // sets the DVD's details
). Could you please point in in the right direction one more time? IT IS an error about a static variable....als o, i need to print out the DVD''s toString method as well...but how would i do that?
I'm such a newbie at this stuff!!!
I would greatly appreciate it BigDaddyLH!!!!! !!
DVD.java
-----------------------------------------------------------------------------------------------------
EnhancedDVD.jav a
--------------------------------------------------------------------------------------------------------------- - /**
-
* Beginning of the EnhancedDVD class.
-
*/
-
public class EnhancedDVD extends DVD
-
{
-
public String dvdDetails = ""; // string DVD details
-
/**
-
* Constructor: EnhancedDVD constructor that passes in the initial DVD details (dvdDetails).
-
*/
-
public EnhancedDVD(String title, int region, int format, double length)
-
{
-
super(title, region, format, length); // passes the DVD class instance variables into the EnhancedDVD constructor
-
this.dvdDetails = dvdDetails; // assign this dvdDetails to dvdDetails
-
}
-
-
// --------------- Beginning of queries ---------------------------
-
-
/**
-
* Query: getdvdDetails
-
*/
-
public String getDetails()
-
{
-
return dvdDetails; // return of the DVD's details
-
}
-
-
// --------------- Beginning of commands ---------------------------
-
-
/**
-
* Command: setDVDDetails
-
*/
-
public static void setDetails(String DetailsOfDVD)
-
{
-
this.dvdDetails = DetailsOfDVD; // sets the DVD's details
-
File: C:\Desktop\EnhancedDVD\EnhancedDVD.java [line: 33]
-
Error: non-static variable this cannot be referenced from a static context
-
}
-
-
public String toString() // returns a text representation of all the data pertaining to a given
-
// DVD's details: stars of the movie, movie rating, genre, basic plot, etc., etc.,
-
{
-
// return of the details of the DVD printable object - formatted as a form
-
// (properly formatted for display, and without the quotes).
-
return "Details: " + getDetails();
-
}
-
}
Driver5.java
--------------------------------------------------------------------------------------------------------------- - /**
-
* Beginning of the Driver5 class
-
*/
-
public class Driver5 {
-
-
public static void main(String[] args) {
-
-
System.out.println("Spring 2008 P5 by " + DVD.getClassAuthor()); // print my name as author
-
-
EnhancedDVD newDVD = new EnhancedDVD("Forrest Gump", 1, DVD.NTSC_FORMAT, 200.); // creates the EnhancedDVD object
-
newDVD.setDetails("Stars: Tom Hanks, Robin White" + "\n" +
-
"Rating: PG-13" + "\n" +
-
"Genre: Drama" + "\n" +
-
"Plot: The title character leads viewers through an accidental" + "\n" +
-
"travelogue of American social history from the early 1960s" + "\n" +
-
"through the present in this revisionist fable.");
-
-
System.out.println(newDVD); // print the details of the DVD
-
}
-
}
maybe the key reason is the implements misused;
change the imlements to extends
OK!!!, I got it working....ever ything looks good. Many thanks to everyone who posted!! I would never make it through java alone!!! All i had to do was remove the "static" type like BigDaddyLH said. Here's the final working solution....
DVD.java class
------------------------------------------------------------------------------------------------------------
EnhancedDVD.jav a class
----------------------------------------------------------------------------------------------------------------- - /**
-
* Beginning of the EnhancedDVD class.
-
*/
-
public class EnhancedDVD extends DVD
-
{
-
public String dvdDetails = ""; // string DVD details
-
/**
-
* Constructor: EnhancedDVD constructor that passes in the initial DVD details (dvdDetails).
-
*/
-
public EnhancedDVD(String title, int region, int format, double length)
-
{
-
super(title, region, format, length); // passes the DVD class instance variables into the EnhancedDVD constructor
-
this.dvdDetails = dvdDetails; // assign this dvdDetails to dvdDetails
-
}
-
-
// --------------- Beginning of queries ---------------------------
-
-
/**
-
* Query: getdvdDetails
-
*/
-
public String getDetails()
-
{
-
return dvdDetails; // return of the DVD's details
-
}
-
-
// --------------- Beginning of commands ---------------------------
-
-
/**
-
* Command: setDVDDetails
-
*/
-
public void setDetails(String DetailsOfDVD)
-
{
-
this.dvdDetails = DetailsOfDVD; // sets the DVD's details
-
}
-
-
public String toString() // returns a text representation of all the data pertaining to a given
-
// DVD's details: stars of the movie, movie rating, genre, basic plot, etc., etc.,
-
{
-
// return of the details of the DVD printable object - formatted as a form
-
// (properly formatted for display, and without the quotes).
-
return "Title: " + title + "\n" +
-
"Region: " + region + "\n" +
-
"Format: " + format + "\n" +
-
"Length: " + length + "\n" + "\n" +
-
getDetails() + "\n";
-
}
-
}
Driver5.java class
------------------------------------------------------------------------------------------------------------- - /**
-
* Beginning of the Driver5 class
-
*/
-
public class Driver5 {
-
-
public static void main(String[] args) {
-
-
System.out.println("Spring 2008 P5 by " + DVD.getClassAuthor()); // print my name as author
-
-
EnhancedDVD newDVD = new EnhancedDVD("Forrest Gump", 1, DVD.NTSC_FORMAT, 200.); // creates the EnhancedDVD object
-
newDVD.setDetails("Stars: Tom Hanks, Robin White" + "\n" +
-
"Rating: PG-13" + "\n" +
-
"Genre: Drama" + "\n" +
-
"Plot: The title character leads viewers through an accidental" + "\n" +
-
"travelogue of American social history from the early 1960s" + "\n" +
-
"through the present in this revisionist fable.");
-
-
System.out.println(newDVD); // print the details of the DVD
-
-
System.out.println( "Last Sectors:");
-
System.out.println( "For \"" + newDVD.title + "\": " +
-
DVD.getSectorNumber(newDVD.length) ); // print newdvd sectors
-
}
-
}
Sign in to post your reply or Sign up for a free account.
Similar topics |
by: Phil Powell |
last post by:
<?php
class SuperClass {
var $mySuperClassVar;
function SuperClass($myVar) {
$this->mySuperClassVar = $myVar;
echo "super class var = $myVar<p>";
}
|
by: Fernando Rodriguez |
last post by:
Hi,
I need to traverse the methods defined in a class and its superclasses. This
is the code I'm using:
# An instance of class B should be able to check all the methods defined in B
#and A, while an instance of class C should be able to check all methods
#defined in C, B and A.
#------------------------------------------------
|
by: Nicolas Lehuen |
last post by:
Hi,
I hope this is not a FAQ, but I have trouble understanding the behaviour of
the super() built-in function. I've read the excellent book 'Python in a
Nutshell' which explains this built-in function on pages 89-90. Based on the
example on page 90, I wrote this test code :
class A(object):
def test(self):
print 'A'
|
by: David MacQuigg |
last post by:
I think there is a documentation error in both the Library Reference
section 2.1 and the Python 2.2 Quick Reference page 19. The
explanation for this function is:
super( type)
Returns the superclass of type.
I could not get this function to work right until I realized that it
is searching the entire MRO, not just the superclasses of 'type'.
Here is a simple experiment to show the difference.
|
by: Delaney, Timothy C (Timothy) |
last post by:
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/286195
This is a new version of super that automatically determines which
method needs to be called based on the existing stack frames. It's much
nicer for writing cooperative classes. It does have more overhead, but
at this stage I'm not so concerned about that - the important thing is
it actually works.
Note that this uses sys._getframe() magic ...
| |
by: Chris Green |
last post by:
Good day,
I've done a bit of searching in the language reference and a couple
pages referring the behavior of super() but I can't find any
discussion of why super needs the name of the class as an argument.
Feel free to point me into the bowels of google if this has been
discussed to death already.
super(self).method() seems like super could just do the right
thing...
|
by: Paul Rubin |
last post by:
I'm trying the super() function as described in Python Cookbook, 1st ed,
p. 172 (Recipe 5.4).
class A(object):
def f(self):
print 'A'
class B(object):
def f(self):
|
by: John Salerno |
last post by:
Here's some code from Python in a Nutshell. The comments are lines from
a previous example that the calls to super replace in the new example:
class A(object):
def met(self):
print 'A.met'
class B(A):
def met(self):
print 'B.met'
|
by: Noah |
last post by:
Am I the only one that finds the super function to be confusing?
I have a base class that inherits from object.
In other words new style class:
class foo (object):
def __init__ (self, arg_A, arg_B):
self.a = arg_A
self.b = arg_B
# Do I need to call __init__ on "object" base class?
|
by: Finger.Octopus |
last post by:
Hello, I have been trying to call the super constructor from my
derived class but its not working as expected. See the code:
class HTMLMain:
def __init__(self):
self.text = "<HTML><BODY>";
print(self.text);
def __del__(self):
self.text = "</BODY></HTML>";
print(self.text);
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed.
This is as boiled down as I can make it.
Here is my compilation command:
g++-12 -std=c++20 -Wnarrowing bit_field.cpp
Here is the code in...
| |
by: jinu1996 |
last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth.
The Art of Business Website Design
Your website is...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For most users, this new feature is actually very convenient. If you want to control the update process,...
|
by: isladogs |
last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM).
In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules.
He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms.
Adolph will...
|
by: conductexam |
last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one.
At the time of converting from word file to html my equations which are in the word document file was convert into image.
Globals.ThisAddIn.Application.ActiveDocument.Select();...
|
by: TSSRALBI |
last post by:
Hello
I'm a network technician in training and I need your help.
I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs.
The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols.
I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
| |
by: 6302768590 |
last post by:
Hai team
i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
|
by: bsmnconsultancy |
last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...
| |