근육 트레이닝 사랑하는 문계 여학생의 Java 입문_캡슐화의 목적 & 이점
소개
며칠 전부터 프로가 마시는 단백질을 마시고 있습니다만, 단백질은 역시 중요 !
아미노모토,,, 아, 아지노모토군요. 의 아미노바이탈·아미노 단백질·레몬맛을 운동 후 직후에 섭취하고 있습니다만, 무려 복사근이 성장해 세로선 예쁘게 샤킨과 보여 왔습니다
이번부터 몇 차례로 나누어 캡슐화에 이어요.
독학으로하고 있기 때문에, "이것은 자바로 가는 데 도움이되는 지식입니다!"
캡슐화의 목적과 이점
Java의 캡슐화란, 필드에의 읽고 쓰기나 메소드의 호출을 제한하는 기능.
예를 들어, "SexyPose 메서드는 MuscleGirl 클래스에서 호출 할 수 있지만 MuscleBoy 클래스에서는 호출 할 수 없습니다."또는 "이 필드의 내용은 누구나 읽을 수 있지만 다시 쓸 수는 없습니다."
현실 세계에서도 중요한 것들에 대한 접근이 불편하다는 것이 좋다.
예를 들면, 은행 계좌나 신용카드의 비밀번호, 각국의 톱 밖에 넣지 않는 시설.
주위에는 「제한」이 행해지고 있는 예가 많이 있다.
이 예와 같이, 정보에의 액세스나 동작에 대해서, 「누구에게 무엇을 용서할 것인가」를 정해 제한하는 것을, 액세스 제어라고 한다.
필드나 메소드에 액세스 제어를 가함으로써, 잘못된 필드 메소드의 이용을 방지해, 원인 개소를 특정하기 쉽게 한다. 그것은 Java에서 캡슐
액세스 제어되지 않는 두려움
그렇다면 액세스 제어에 대해 배우기 전에 ...
「액세스 제어되지 않는 프로그램이 얼마나 위험한가」를, 스토리 게임의 개발 프로젝트를 예로 생각해 본다.
설정
근육 보이
//アクセス制御されないプログラム
1 public class MuscleBoy{
2 int hp;
3 String name;
4 static int money;
5
6 void run(){
7 System.out.println(this.name + "は、逃げた!");
8 }
9 void drink(){
10 System.out.println(this.name + "は、飲んでいる");
11 }
12 void workOut(){
13 this.hp -= 10;
14 System.out.println(this.name + "は、筋トレをした!");
15 System.out.println("−10ポイントHPが減った!!");
16 }
17 }
그러면 MuscleBoy 클래스를 사용한 게임 테스트 중에 "workOut을 한번도 하지 않았는데 근육보이의 HP가 -100이 되어 있다"는 힘든 사태를 만났다고 한다.
수만 줄이 넘는 프로그램의 결함을 철저히 조사한 결과, Protein 클래스에 문제가 발각
1 public class Protein{
2 void recover(MuscleBoy mb){
3 mb.hp -= 100; //不具合
4 }
5 }
다음날 이번에는 "근육보이가 workOut을 종료한 후 왠지 취해버렸다"는 문제가 발견됐다.
또한 밤새 조사 한 결과, "스포츠 트레이너 클래스"에 문제가있었습니다.
1 public class SportsTrainer{
2 void talk (MuscleBoy mb){
3 System.out.println("おつかれさん!" + mb.name );
4 System.out.println("今回の筋トレ疲れたじゃろ?");
5 System.out.ptintln("プロテイン摂取して、回復しといてな〜。では、次回のトレで会おう!");
6 mb.drunken(); //ここが不具合の原因!酔っ払ってしまった・・。
7 }
8}
개발자가 실수로 drink()를 drunken()이라고 듣고 실수해 버린 것 같다··.
상기와 같은 실수는, 프로그램에 이하와 같은 액세스 제어를 포함하고 있으면 사전에 막았을 것이다.
・MuscleBoy 클래스 이외에서는 HP 필드에 값을 대입할 수 없다
・drink 메소드를 호출할 수 있는 것은 MuscleBoy 클래스만
캡슐화는 이러한 액세스 제어를 실현하고 버그를 미연에 방지 할 수 있습니다.
Reference
이 문제에 관하여(근육 트레이닝 사랑하는 문계 여학생의 Java 입문_캡슐화의 목적 & 이점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/amippy/items/6d2f56881801d1521a8c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//アクセス制御されないプログラム
1 public class MuscleBoy{
2 int hp;
3 String name;
4 static int money;
5
6 void run(){
7 System.out.println(this.name + "は、逃げた!");
8 }
9 void drink(){
10 System.out.println(this.name + "は、飲んでいる");
11 }
12 void workOut(){
13 this.hp -= 10;
14 System.out.println(this.name + "は、筋トレをした!");
15 System.out.println("−10ポイントHPが減った!!");
16 }
17 }
1 public class Protein{
2 void recover(MuscleBoy mb){
3 mb.hp -= 100; //不具合
4 }
5 }
1 public class SportsTrainer{
2 void talk (MuscleBoy mb){
3 System.out.println("おつかれさん!" + mb.name );
4 System.out.println("今回の筋トレ疲れたじゃろ?");
5 System.out.ptintln("プロテイン摂取して、回復しといてな〜。では、次回のトレで会おう!");
6 mb.drunken(); //ここが不具合の原因!酔っ払ってしまった・・。
7 }
8}
Reference
이 문제에 관하여(근육 트레이닝 사랑하는 문계 여학생의 Java 입문_캡슐화의 목적 & 이점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/amippy/items/6d2f56881801d1521a8c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)