User Tools

Site Tools


java:class_fields

Τα πεδία της κλάσης

Ονοματολογία των πεδίων (μεταβλητών) της κλάσης

Οι κανόνες ονοματολογίας των μεταβλητών στην Java συνοψίζονται στα εξής:

  1. Τα ονόματα των μεταβλητών είναι case-sensitive. Κάθε μεταβλητή μπορεί να ξεκινά με ένα γράμμα της αλφαβήτου (κεφαλαίο ή μικρό), τον χαρακτήρα '$' ή τον χαρακτήρα '_'. Αποφύγετε όμως οι μεταβλητές σας να ξεκινούν με τους χαρακτήρες '$' ή '_' εκτός αν συντρέχει ισχυρός λόγος.
  2. Οι υπόλοιποι χαρακτήρες των μεταβλητών σας μπορεί να είναι γράμματα (κεφαλαία και μικρά), αριθμοί και οι χαρακτήρες '$', '_'. Αποφύγετε στην ονοματολογία σας μεταβλητές που έχουν μόνο ένα γράμμα (π.χ. int s, double c) εκτός και εάν πρόκειται για μεταβλητές δείκτες που χρησιμοποιούνται σε επανάληψη (π.χ for, while).
  3. Αν το όνομα της μεταβλητής σας αποτελείται από μία λέξη τότε γράψτε την λέξη αυτή με μικρά γράμματα (π.χ. role, colour, speed). Εάν η μεταβλητή σας περιέχει δύο λέξεις ενώστε τις λέξεις αυτές κάνοντας το πρώτο γράμμα κάθε λέξης κεφαλαίο (π.χ. adminRole, brighterColour, maxSpeed, maxSpeedTest).
  4. Εάν η μεταβλητή σας ορίζεται ως σταθερά, δηλαδή χαρακτηρίζεται από το πρόθεμα static final (π.χ. static final double PI = 3.14159265359;), τότε χρησιμοποιήστε εξ ολοκλήρου κεφαλαία αντί για μικρά γράμματα.

Τύποι πεδίων της κλάσης

Μία κλάση μπορεί να διαθέτει τους εξής τύπους πεδίων

  1. primitive (βασικούς) τύπους δεδομένων: (πχ. int, long, char, double, float κλπ, σε αναλογία με τους τύπους δεδομένων της γλώσσας προγραμματισμού C) και
  2. reference (αναφορικούς) τύπους δεδομένων: σύνθετους τύπους δεδομένων οι οποίοι περιγράφονται από κλάσεις.

Βασικοί Τύποι

Βασικοί τύποι δεδομένων είναι οι ακεραιες μεταβλητές που συναντήσαμε στην κλάση Rectangle της προηγούμενης σελίδας. Οι βασικοί τύποι δεδομένων περιγράφονται περιληπτικά στον παρακάτω πίνακα:

τύπος δεδομένων byte short int long float double boolean char
αριθμός bits 8 16 32 64 32-bit IEEE 754 floating point 64-bit IEEE 754 floating point not-applicable* 16
αριθμός bytes 1 2 4 8 4 8 not-applicable* 2
εύρος τιμών -128 έως 127 -32.768 έως 32.767 -231 έως 231-1 -263 έως 263 μόνο δύο τιμές true και false 16bit Unicode characters

* Ο τύπος boolean λαμβάνει μόνο δύο τιμές. Ο αριθμός των bytes που καταλαμβάνονται δεν ορίζεται και πιθανόν διαφέρει από υλοποίηση σε υλοποίηση JVM.

Αναφορικοί Τύποι

Αναφορικοί (reference) τύποι δεδομένων είναι οι μη βασικοί τύποι δεδομένων που περιγράφονται από κλάσεις. Για παράδειγμα, ας υποθέσουμε ότι θέλουμε να προσθέσουμε τη θέση του ορθογώνιου παραλληλόγραμμου που ορίσαμε στην προηγούμενη παράγραφο στο δισδιάστατο χώρο. Η θέση του παραλληλογράμμου μπορεί να προσδιοριστεί από την παρακάτω κλάση Point η οποία περιγράφει ένα σημείο στο χώρο μέσω των συντεταγμένων του στους δύο άξονες. Θεωρούμε ότι το σημείο προσδιορίζει τη γωνία του παραλληλογράμμου με τις μικρότερες τιμές στον όριζόντιο και κάθετο άξονα (δηλ την κάτω αριστερή γωνία), όπως φαίνεται στο παρακάτω σχήμα.

Point.java
class Point {
  int x;   // x coordinate
  int y;   // y coordinate
 
  public Point(int xPos, int yPos) {
    x = xPos;
    y = yPos;
  }
 
  int getX() {
    return x;
  }
 
  void setX(int xPos) {
    x = xPos;
  }
 
  int getY() {
    return y;
  }
 
  void setY(int yPos) {
    y = yPos;
  }
}

Με χρήση της παραπάνω κλάσης η κλάση Rectangle μετασχηματίζεται ως εξής.

Rectangle.java
class Rectangle {
 
  // the Rectangle class has 3 fields
  int width;
  int height;
  Point origin;
 
  // the Rectangle class has one constructor
  public Rectangle(int initWidth, int initHeight, Point initOrigin) {
    width = initWidth;
    height = initHeight;
    origin = initOrigin;
  }
 
  void setWidth(int newWidth ) {
    width = newWidth;
  }
 
  void setHeight(int newHeight ) {
    height = newHeight;
  }
 
  void setOrigin(Point newOrigin) {
    origin = newOrigin;
  }
 
  Point getOrigin() {
    return origin;
  }
 
  int area() {
    return width * height;
  }
}

Η κλάση Rectangle επομένως περιέχει εκτός από primitive πεδία και ένα reference πεδίο, το πεδίο origin.

java/class_fields.txt · Last modified: 2022/02/23 10:11 by gthanos