Advertisement
Guest User

Persoon

a guest
Nov 27th, 2014
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.64 KB | None | 0 0
  1. /**
  2. * De klasse persoon zal een aantal gegevens bewaren van een persoon.
  3. *
  4. * @author R. Siersma
  5. * @date 23-11-2012
  6. */
  7. public class Persoon
  8. {
  9. // Burgerservicenummer van de persoon
  10. private int bsn;
  11. // Voornaam en achternaam van de persoon
  12. private String voornaam;
  13. private String achternaam;
  14. // Geboortedatum van de persoon gesplitst in dag, maand en jaar
  15. private int dag, maand, jaar;
  16. // Geslacht van de persoon
  17. private char geslacht;
  18.  
  19. private Dienblad dienblad;
  20.  
  21. /**
  22. * Constructor voor de klasse Persoon
  23. *
  24. * @param bsn Burgerservicenummer van de persoon
  25. * @param voornaam Voornaam van de persoon
  26. * @param achternaam Achternaam van de persoon
  27. * @param dag Dag van de geboortedatum van de persoon
  28. * @param maand Maand van de geboortedatum van de persoon
  29. * @param jaar Jaar van de geboortedatum van de persoon
  30. * @param geslacht Geslacht van de persoon
  31. */
  32. public Persoon(
  33. int bsn,
  34. String voornaam,
  35. String achternaam,
  36. int dag,
  37. int maand,
  38. int jaar,
  39. char geslacht
  40. )
  41. {
  42. // Stel het bsn in met behulp van de setBsn methode
  43. this.setBsn(bsn);
  44. // Stel de voornaam in met behulp van de setVoornaam methode
  45. this.setVoornaam(voornaam);
  46. // Stel de voornaam in met behulp van de setAchternaam methode
  47. this.setAchternaam(achternaam);
  48. // Stel de geboortedatum in met behulp van de setGeboortedatum methode
  49. this.setGeboortedatum(dag, maand, jaar);
  50. // Stel het geslacht in met behulp van de setGeslacht methode
  51. this.setGeslacht(geslacht);
  52. }
  53. /**
  54. * Constructor voor de klasse Persoon
  55. */
  56. public Persoon()
  57. {
  58. // Stel de waarden in voor een onbekende geboortedatum en geslacht
  59. this.setGeboortedatum(0,0,0);
  60. this.setGeslacht('O');
  61. }
  62.  
  63. /**
  64. * Getter voor BSN
  65. * @return BSN als int
  66. */
  67. public int getBsn ()
  68. {
  69. return this.bsn;
  70. }
  71.  
  72. /**
  73. * Getter voor voornaam
  74. * @return Voornaam als string
  75. */
  76. public String getVoornaam ()
  77. {
  78. return this.voornaam;
  79. }
  80.  
  81. /**
  82. * Getter voor achternaam
  83. * @return Achternaam als string
  84. */
  85. public String getAchternaam ()
  86. {
  87. return this.achternaam;
  88. }
  89.  
  90. /**
  91. * Getter voor geboortedatum
  92. * @return Geboortedatum als string
  93. */
  94. public String getGeboorteDatum()
  95. {
  96. String temp;
  97. if (dag==0 && maand==0 && jaar==0)
  98. {
  99. temp="Onbekend";
  100. }
  101. else
  102. {
  103. temp=dag+"/"+maand+"/"+jaar;
  104. }
  105. return temp;
  106. }
  107.  
  108. /**
  109. * Getter voor geslacht
  110. * @return Geslacht als string
  111. */
  112. public String getGeslacht ()
  113. {
  114. String temp;
  115.  
  116. // Als het geslacht 'M' is return dan "Man"
  117. if (this.geslacht == 'M')
  118. {
  119. temp = "Man";
  120. }
  121. // Als het geslacht 'V' is return dan "Vrouw"
  122. else if (this.geslacht == 'V')
  123. {
  124. temp = "Vrouw";
  125. }
  126. // Het geslacht is niet 'M' of 'V', return geslacht "Onbekend"
  127. else
  128. {
  129. temp = "Onbekend";
  130. }
  131.  
  132. return temp;
  133. }
  134.  
  135. /**
  136. * setBsn
  137. * Stelt het gegeven burgerservicenummer in voor het veld bsn.
  138. *
  139. * @param bsn het burgerservicenummer van de persoon
  140. */
  141. public void setBsn (int bsn)
  142. {
  143. this.bsn = bsn;
  144. }
  145.  
  146. /**
  147. * setVoornaam
  148. * Stelt de gegeven voornaam in voor het veld voornaam.
  149. *
  150. * @param voornaam de voornaam van de persoon
  151. */
  152. public void setVoornaam (String voornaam)
  153. {
  154. this.voornaam = voornaam;
  155. }
  156.  
  157. /**
  158. * setAchternaam
  159. * Stelt de gegeven achternaam in voor het veld achternaam.
  160. *
  161. * @param achternaam de achternaam van de persoon
  162. */
  163. public void setAchternaam (String achternaam)
  164. {
  165. this.achternaam = achternaam;
  166. }
  167.  
  168. /**
  169. * setGeslacht
  170. * Stelt het gegeven geslacht in voor het veld geslacht.
  171. *
  172. * @param geslacht het geslacht van de persoon (M of V, O voor onbekend)
  173. */
  174. public void setGeslacht (char geslacht)
  175. {
  176. if (Character.toUpperCase(geslacht) == 'M')
  177. {
  178. this.geslacht = 'M';
  179. }
  180. else if (Character.toUpperCase(geslacht) == 'V')
  181. {
  182. this.geslacht = 'V';
  183. }
  184. else {
  185. this.geslacht = 'O';
  186. }
  187. }
  188.  
  189. /**
  190. * isSchrikkeljaar
  191. * Geeft aan of het jaartal (gegeven in parameter) een schrikkeljaar is of niet
  192. *
  193. * @param jaartal Het jaartal waarvan moet worden berekend of het een schrikkeljaar is.
  194. *
  195. * @return Als het een schrikkeljaar is 'true' anders 'false'
  196. */
  197. private boolean isSchrikkeljaar(int jaartal)
  198. {
  199. /*
  200. * Berekening:
  201. * if
  202. * (
  203. * jaartalDeelbaarDoor4
  204. * &&
  205. * (
  206. * jaartalNietDeelbaarDoor100
  207. * ||
  208. * jaartalDeelbaarDoor400
  209. * )
  210. * )
  211. * {
  212. * schrikkeljaar
  213. * }
  214. */
  215. if
  216. (
  217. // Als het jaartal deelbaar is door 4 is het een schrikkeljaar
  218. (jaartal % 4 == 0)
  219. &&
  220. (
  221. // Tenzij het jaartal ook deelbaar is door 100
  222. (jaartal % 100 != 0)
  223. ||
  224. // Maar als het deelbaar is door 100 en door 400 is het wel een schrikkeljaar
  225. (jaartal % 400 == 0)
  226. )
  227. )
  228. {
  229. return true;
  230. }
  231. else {
  232. return false;
  233. }
  234. }
  235.  
  236. /**
  237. * setGeboortedatum
  238. * Stelt de gegeven dag, maand en jaar in voor de velden dag, maand, jaar.
  239. *
  240. * @param dag de geboortedag van de persoon
  241. * @param maand de geboortemaand van de persoon
  242. * @param jaar het geboortejaar van de persoon
  243. */
  244. public void setGeboortedatum (int dag, int maand, int jaar)
  245. {
  246. // De maximale dagwaarde voor een bepaalde maand.
  247. int maxDag;
  248.  
  249. // Aan de hand van de de maand wordt gekeken hoeveel dagen er in die maand zitten.
  250. switch (maand) {
  251. case 1:
  252. case 3:
  253. case 5:
  254. case 7:
  255. case 8:
  256. case 10:
  257. case 12:
  258. // In deze maanden zitten er 31 dagen in een maand
  259. maxDag = 31;
  260. break;
  261. case 2:
  262. // Als het een schrikkeljaar is zitten er 29 dagen in februari
  263. if (this.isSchrikkeljaar(this.jaar))
  264. {
  265. maxDag = 29;
  266. }
  267. // Als het geen schrikkeljaar is maar 28 dagen
  268. else
  269. {
  270. maxDag = 28;
  271. }
  272. break;
  273. default:
  274. maxDag = 30;
  275. }
  276.  
  277. // Controleer of alle eisen voor de datum waar zijn.
  278. if (
  279. // Dag moet 1 of hoger zijn
  280. dag < 1
  281. ||
  282. // Dag moet onder de maximum dag van die maand zitten
  283. dag > maxDag
  284. ||
  285. // Maand moet 1 of hoger zijn
  286. maand < 1
  287. ||
  288. // Maand mag maximaal 12 zijn
  289. maand > 12
  290. ||
  291. // Jaar moet 1900 of hoger zijn
  292. jaar <= 1900
  293. ||
  294. // Jaar moet onder 2100 zitten
  295. jaar >= 2100
  296. )
  297. {
  298. // Geboortedatum is incorrect, zet alle velden op 0.
  299. this.dag = 0;
  300. this.maand = 0;
  301. this.jaar = 0;
  302. }
  303. // Geboorte ddatum is correct, stel hem in
  304. else
  305. {
  306. this.dag = dag;
  307. this.maand = maand;
  308. this.jaar = jaar;
  309. }
  310. }
  311.  
  312. /**
  313. * Drukt de gegevens van de persoon af naar de terminal\
  314. */
  315. public void drukAf()
  316. {
  317. System.out.println("##########");
  318. System.out.println("Bsn: " + this.getBsn());
  319. System.out.println("Voornaam: " + this.getVoornaam());
  320. System.out.println("Achternaam: " + this.getAchternaam());
  321. System.out.println("Geboortedatum: " + this.getGeboorteDatum());
  322. System.out.println("Geslacht: " + this.getGeslacht());
  323. System.out.println("##########");
  324. }
  325.  
  326. /**
  327. * Methode om dienblad te koppelen aan een persoon
  328. * @param dienblad
  329. */
  330. public void pakDienblad(Dienblad dienblad)
  331. {
  332. if (this.heeftDienblad())
  333. {
  334. System.out.println("U heeft al een dienblad gepakt.");
  335. }
  336. else
  337. {
  338. this.dienblad = dienblad;
  339. }
  340. }
  341.  
  342. /**
  343. * Methode om artikel te pakken en te plaatsen op het dienblad
  344. * @param artikel
  345. */
  346. public void pakArtikel(Artikel artikel)
  347. {
  348. if (this.heeftDienblad())
  349. {
  350. dienblad.voegToe(artikel);
  351. }
  352. else
  353. {
  354. System.out.println("U moet eerst een dienblad pakken voordat u een artikel kunt pakken.");
  355. }
  356. }
  357.  
  358. /**
  359. * Methode om artikel te pakken en te plaatsen op het dienblad
  360. * @param artikel
  361. */
  362. public boolean heeftDienblad()
  363. {
  364. if (this.dienblad == null)
  365. {
  366. return false;
  367. }
  368. else
  369. {
  370. return true;
  371. }
  372. }
  373.  
  374. /**
  375. * Methode om de totaalprijs van de artikelen
  376. * op dienblad dat bij de persoon hoort uit te rekenen
  377. * @return De totaalprijs
  378. */
  379. public double getTotaalPrijs()
  380. {
  381. if (heeftDienblad())
  382. {
  383. return dienblad.getTotaalPrijs();
  384. }
  385. else
  386. {
  387. return 0.00;
  388. }
  389. }
  390.  
  391. /**
  392. * Methode om het aantal artikelen op dienblad dat bij de
  393. * persoon hoort te tellen
  394. * @return Het aantal artikelen
  395. */
  396. public int getAantalArtikelen()
  397. {
  398. if (heeftDienblad())
  399. {
  400. return dienblad.getAantalArtikelen();
  401. }
  402. else
  403. {
  404. return 0;
  405. }
  406. }
  407.  
  408. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement