Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #3162

Re: Double always returning 0.0

From Jason S <jason.savlov@gmail.com>
Newsgroups comp.lang.java.programmer
Date 2011-04-20 13:53 -0400
Message-ID <2011042013535527735-jasonsavlov@gmailcom> (permalink)
References (1 earlier) <iojj2h$4fn$1@news.metronet.hr> <2011041911160346799-jasonsavlov@mecom> <iok936$uh9$2@news.albasani.net> <2011041911200138175-jasonsavlov@mecom> <iokioc$kmi$1@news.albasani.net>
Subject Re: Double always returning 0.0

Show all headers | View raw


Thank you! I understand how that works now. Except it still outputs 
0.000 for the cat's weight. Everything else works though.

On 2011-04-19 14:03:03 -0400, Lew said:

> Jason S wrote:
>> http://web.cs.sunyit.edu/~savlovj/CS249/pg472_8
>> 
>> The code is there in full
> 
> There are a few things you should watch out for in your code.
> 
> Stylistically, in a class declaration you should list all fields first, 
> then constructors, then methods.  (You haven't learned about 'static' 
> members yet, so I do not speak of those at this time.)  This makes it 
> easier to find what you're looking for.
> 
> You declare the same exact attributes in supertype and subtype:
> 
>   public class Pet {
>     private String name;
>     private int age; // years
>     private double weight; // lbs
>    ...
> 
>   public class Cat extends Pet {
>     private String name;
>     private int age;
>     private double weight;
>    ...
> 
> This is bad.  Because 'Cat' /is-a/ 'Pet', it already possesses within 
> itself these attributes already, without redeclaring them.  The only 
> question is how it can gain access to them.  As it is, you call 
> 'setAge()' on a 'Cat' and it will fail to do what you expect.  Plus, 
> the type's clients have no way to read the attributes.
> 
> The answer (one answer) is to add accessor ("getter") and mutator 
> ("setter") methods for each attribute.  (No setter is needed for 
> read-only attributes.) I added exceptions and a couple of 'this()' 
> constructor references for your study fun.  Note that your individual 
> constructors only work because the argument types differ.  That's a 
> power trick you used there.
> 
> You should use 0.0 for a double constant, not 0.
> 
> I have omitted Javadocs for this example, but that's a bad habit.
> 
> As someone else suggested, the dosage methods should be abstract in the 
> parent type.
> 
> ============================================================
> 
>   public abstract class Pet {
>     private String name;
>     private int age;        // years
>     private double weight;  // lbs
> 
>    public Pet( String name, int age, double weight ) {
>      setName( name );   // works because the setters are final
>      setAge( age );
>      setWeight( weight );
>    }
> 
>    public Pet( String name ) {
>      this( name, 0, 0.0 );
>    }
> 
>    public Pet( int age ) {
>      this( "", age, 0.0 );
>    }
> 
>    public Pet( double weight ) {
>      this( "", 0, weight );
>    }
> 
>    public Pet()
>      this( "", 0, 0.0 );
>    }
> 
>    public final String getName() (
>      return this.name;
>    }
>    public final void setName( String name ) {
>      if ( name == null ) {
>        final String msg = "null name.";
>        throw new IllegalArgumentException( msg );
>      }
>      this.name = name;
>    }
> 
>    public final String getAge() (
>      return this.age;
>    }
>    public final void setAge( int age ) {
>      if ( age < 0) {
>        final String msg = "negative age "+ age +".";
>        throw new IllegalArgumentException( msg );
>      }
>      this.age = age;
>    }
> 
>    public final String getWeight(() (
>      return this.weight;
>    }
>    public final void setWeight( double weight ) {
>      if ( weight < 0.0 ) {
>        final String msg = "negative weight "+ weight +".";
>        throw new IllegalArgumentException( msg );
>      }
>      this.weight = weight;
>    }
> 
>    public abstract double acepromazine();
>    public abstract double carprofen();
> 
>   }
> 
> ============================================================
> 
>   public class Cat extends Pet {
> 
>    public Cat( String name, int age, double weight ) {
>      super( name, age, weight );
>    }
> 
>    public Cat( String name ) {
>      super( name );
>    }
> 
>    public Cat( int age ) {
>      super( age );
>    }
> 
>    public Cat( double weight ) {
>      super( weight );
>    }
> 
>    public Cat()
>    }
> 
>    @Override
>    public double acepromazine() {
>      return (weight * 0.002 / 10.0 / 2.2 );
>    }
> 
>    @Override
>    public double carprofen() {
>      return ( weight * 0.25 / 12.0 / 2.2 );
>    }
> 
> }
> 
> ============================================================


-- 
Jason

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Double always returning 0.0 Jason S <jasonsavlov@me.com> - 2011-04-18 20:05 -0400
  Re: Double always returning 0.0 markspace <-@.> - 2011-04-18 17:43 -0700
  Re: Double always returning 0.0 Jim <jkorman@alltel.net> - 2011-04-18 20:11 -0500
  Re: Double always returning 0.0 Screamin Lord Byron <scre@min.dot> - 2011-04-19 11:02 +0200
    Re: Double always returning 0.0 Jason S <jasonsavlov@me.com> - 2011-04-19 11:16 -0400
      Re: Double always returning 0.0 Lew <noone@lewscanon.com> - 2011-04-19 11:18 -0400
        Re: Double always returning 0.0 Jason S <jasonsavlov@me.com> - 2011-04-19 11:20 -0400
          Re: Double always returning 0.0 Lew <noone@lewscanon.com> - 2011-04-19 11:57 -0400
          Re: Double always returning 0.0 Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-19 16:04 +0000
            Re: Double always returning 0.0 Jason S <jasonsavlov@me.com> - 2011-04-19 17:22 -0400
          Re: Double always returning 0.0 Screamin Lord Byron <scre@min.dot> - 2011-04-19 19:08 +0200
          Re: Double always returning 0.0 Lew <noone@lewscanon.com> - 2011-04-19 14:03 -0400
            Re: Double always returning 0.0 Lew <noone@lewscanon.com> - 2011-04-19 14:06 -0400
            Re: Double always returning 0.0 Jason S <jason.savlov@gmail.com> - 2011-04-20 13:53 -0400
              Re: Double always returning 0.0 Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-04-20 18:06 +0000
                Re: Double always returning 0.0 Lew <noone@lewscanon.com> - 2011-04-20 14:11 -0400
                Re: Double always returning 0.0 Jason S <jason.savlov@gmail.com> - 2011-04-20 14:19 -0400
                Re: Double always returning 0.0 Lew <noone@lewscanon.com> - 2011-04-20 14:29 -0400
                [OT] Re: Double always returning 0.0 Stanimir Stamenkov <s7an10@netscape.net> - 2011-04-21 07:30 +0300
      Re: Double always returning 0.0 Screamin Lord Byron <scre@min.dot> - 2011-04-19 19:05 +0200
  Re: Double always returning 0.0 Jason S <jasonsavlov@me.com> - 2011-04-19 13:07 -0400
  Re: Double always returning 0.0 Roedy Green <see_website@mindprod.com.invalid> - 2011-04-19 16:30 -0700

csiph-web