Bestimmung der Zeitpunkte von Ereignissen
ulrich
2023-03-20 c14e57e2f54e38a54059d57146ea98d1ffc4762f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
/*
  Zeitrechnung - a class library to determine calendar events
  Copyright (c) 1984-2023 Ulrich Hilger, http://uhilger.de
 
  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Affero General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
 
  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU Affero General Public License for more details.
 
  You should have received a copy of the GNU Affero General Public License
  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package de.uhilger.zeitrechnung;
 
/**
 * Ein geographischer Ort bestehend aus geographischer Laenge, Breite 
 * sowie Hoehe und Zeitzone.
 * 
 * @author Ulrich Hilger
 */
public class Ort {
 
  /** name dieses Ortes */
  private String name;
  /** geogr. Breite dieses Ortes */
  private double breite;
  /** geogr. Laenge dieses Ortes */
  private double laenge;
  /** Hoehe dieses Ortes */
  private double hoehe;
  /** Zeitzone dieses Ortes */
  private double zeitzone;
 
  public static final String TAG_ORT = "ort";
  public static final String ATTR_NAME = "name";
  public static final String ATTR_LATITUDE = "lat";
  public static final String ATTR_LONGITUDE = "long";
  public static final String ATTR_ELEVATION = "elev";
  public static final String ATTR_TIME_ZONE = "zone";
  
  /**
   * Ein Objekt der Klasse Ort erzeugen
   */
  public Ort() {
  }
 
  /**
   * Ein Objekt der Klasse Ort mit Vorbelegungen erzeugen
   * 
   * @param name  Name des Ortes
   * @param breite  geographische Breite des Ortes (-90=Suedpol 0=Aequator +90=Nordpol)
   * @param laenge   geographische Laenge des Ortes 
   *       (-179=westlich von Greenwich 0=Greenwich +179=Oestlich von Greenwich +-180=Datumslinie)
   * @param hoehe  die Hoehe des Ortes in Metern ueber dem Meer
   * @param zeitzone  die Zeitzone des Ortes in Stunden vor oder nach Greenwich-Zeit
   */
  public Ort(String name, double breite, double laenge, double hoehe, double zeitzone) {
    this.name = name;
    this.breite = breite;
    this.laenge = laenge;
    this.hoehe = hoehe;
    this.zeitzone = zeitzone;
  }
 
  /**
   * Den Namen des Ortes angeben
   * @param name the name
   */
  public void setName(String name) {
    this.name = name;
  }
 
  /**
   * Die geographische Breite des Ortes angeben
   * @param breite    geographische Breite des Ortes (-90=Suedpol 0=Aequator +90=Nordpol)
   * als Dezimalzahl. Eine Angaben in Grad muss zuvor umgerechnet werden 
   * mit Minute/60 Sekunde/3600
   */
  public void setBreite(double breite) {
    this.breite = breite;
  }
 
  /**
   * Die geographische Laenge des Ortes angeben
   * @param longitude  geographische Laenge des Ortes 
   *       (-179=westlich von Greenwich 0=Greenwich +179=Oestlich von Greenwich +-180=Datumslinie)
   * als Dezimalzahl. Eine Angaben in Grad muss zuvor umgerechnet werden 
   * mit Minute/60 Sekunde/3600
   */
  public void setLaenge(double longitude) {
    this.laenge = longitude;
  }
 
  /**
   * Die Hoehe des Ortes angeben
   * @param elevation die Hoehe des Ortes in Metern ueber dem Meer
   */
  public void setHoehe(double elevation) {
    this.hoehe = elevation;
  }
 
  /**
   * Die Zeitzone des Ortes angeben
   * @param timeZone die Zeitzone des Ortes in Stunden vor (-) oder nach (+) Universal Time (UT)
   */
  public void setZeitzone(double timeZone) {
    this.zeitzone = timeZone;
  }
 
  /**
   * Den Namen des Ortes ermitteln
   * @return  Name des Ortes
   */
  public String getName() {
    return name;
  }
 
  /**
   * Die geographische Laenge des Ortes ermitteln
   * @return    geographische Laenge des Ortes 
   *       (-179=westlich von Greenwich 0=Greenwich +179=Oestlich von Greenwich +-180=Datumslinie)
   * als Dezimalzahl
   */
  public double getLaenge() {
    return laenge;
  }
 
  /**
   * Die geographische Breite des Ortes ermitteln
   * @return  geographische Breite des Ortes (-90=Suedpol 0=Aequator +90=Nordpol)
   * als Dezimalzahl. 
   */
  public double getBreite() {
    return breite;
  }
 
  /**
   * Die Hoehe des Ortes ermitteln
   * @return  die Hoehe des Ortes in Metern ueber dem Meer
   */
  public double getHoehe() {
    return hoehe;
  }
 
  /**
   * Die Zeitzone des Ortes ermitteln
   * @return die Zeitzone des Ortes in Stunden vor (-) oder nach (+) Universal Time (UT)
   */
  public double getZeitzone() {
    return zeitzone;
  }
 
  /**
   * den Ort als String-Objekt ermittln
   * @return  dieses Objekt als String
   */
  public String toString() {
    return getName();
  }
 
  /**
   * Feststellen, ob dieser Ort gleich einem anderen Ort ist.
   * 
   * @param obj ein anderes Objekt, das mit diesem Objekt verglichen werden soll
   * @return true, wenn die Objekte gleich sind, false wenn nicht
   */
  public boolean equals(Object obj) {
    boolean isEqual = false;
    if (this == obj) {
      isEqual = true;
    } else if (obj instanceof Ort) {
      Ort o = (Ort) obj;
      isEqual =
        o.getBreite() == breite &&
        o.getLaenge() == laenge &&
        o.getHoehe() == hoehe &&
        o.getZeitzone() == zeitzone;
    }
    return isEqual;
  }
 
}