ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 006. 클래스명 표기법, BufferedReader, System.in.read/skip() 실습
    SsY/Class 2023. 2. 17. 01:25
    728x90

    2023.02.01(수)

    클래스명 표기법
    - 파스칼 표기법
    - 언더스코어 표기법
    - 캐멀 표기법 (클래스, 메소드, 변수)
    - 헝가리언 표기법
    • 파스칼 표기법(Pascal Notation : Pascal Case)
    더보기

    파스칼 표기법은 첫 글자를 대문자로 구성하며
    단어가 합성될 때 마다 각 단어의 첫 글자를 대문자로
    표기하는 방식(방법)이다.

    ex) class MainTitle class Circle class UserStatus

    자바에서는 클래스의 명명 규칙인 첫 글자를 대문자로 한다는 규칙에
    캐멀 표기법이 합쳐진 형태이다.

    • 언더스코어 표기법(Underscore Notation : Uncerscore Case : 밑줄 표기법)
    더보기

       (Uncerscore = Underline)
       주로 데이터베이스쪽이나 자바스크립트 쪽에서
       지역 변수를 사용할 경우에 언더바를 사용하는
       언더스코어 표기법을 사용하기도 한다.

       ex) content_name user_data

    • 캐멀 표기법(Camel Notation : Camel Case : 낙타 표기법)
    더보기

      캐멀 표기법은 두 단어 이상의 변수명을 표기할 때
       두 번째 단어부터 첫 글자를 대문자로 표기하는 방법이다.

       ex) addData rainbowColor userName

       변수의 명명규칙(Naming rule)인 첫 글자를 반드시 소문자로 한다는 규칙과
       캐멀 표기법이 합쳐져서 네이밍이 이루어진다.
       
       캐멀 표기법은 자바에서 시작된 것으로
       변수명 혹은 클래스명을 작성할 때
       단어마다 단어의 첫 글자를 대문자로 표기하는 것이다.
       이표기법은 각 단어의 첫 글자를 대문자로 표기외더
       마치 낙타의 등처럼 보이기 때문이라는 설이 있지만.. 사실과는 다르다.

       - 클래스 이름 // 파스칼
       : 맨 앞글자를 대문자로 시작한다
         두 번째 오는 의미 있는 단어의 앞 글자도 대문자이다.

         ex) public class MyClass{} //(O)
           public class Myclass{} //(x)

       - 변수 이름 // 캐멀
       : 맨 앞 글자를 소문자로 한다.
         두 번째 오는 의미 있는 단어의 앞 글자는 대문자이다.

         ex) String myName; //(O)
             String MyName; //(X)

       - 메소드 이름
       : 맨 앞 글자를 소문자로 한다.
         두 번째로 오는 의미있는 단어의 앞 글자는 대문자이다.
         (변수 이름과 동일한 방법)
         단, 메소드의 이름은 가급적 동사로 시작한다.

         ex) public String createMyName(){} //(O)
           public String createmyname(){} //(X)
     public String myName(){} // (동사가 아니라 명사이므로 비추천)

    • 헝가리언 표기법(Hungarian Notation : Hungarian Case)
    더보기

      헝가리언 표기법은 Microsoft사의
       Charles Simonyi 프로그래머가 만들었다고 한다.
       그가 코딩할 때 습관적으로 즐겨쓰던 접두사 변수 명명 방식이
       빌 게이츠의 눈에 띄어 표준화(일반화)된 것이라 한다.

       변수를 표기할 때 앞에 접두어로 쉽게 알아볼 수 있도록
       표기하였는데, 이를 통해 자료형을 쉽게 알아볼 수 있다는 특징이 있다.
       
       ex) int nNum float fNum
           argument of string → args

      Data Type               Prefix         Example
       ------------------------- -------------- ------------------
       boolean                   b                bContinue
       int                            n                nIndex
       short                        n                nNum
       char                         c                cFirstInitial
       string                       s(str)          sCustomerName(strCustomerName)

     ==> 실제 자바 프로젝트에서 클래스는 파스칼 표기법으로(+캐멀 표기법)
         변수나 메소드의 이름은 캐멀 표기법으로 사용하고,
         상수화 된 변수일 경우 밑줄 표기법을 사용하며,
         간혹 오래된 프로젝트를 유지보수 하다보면
         헝가리언 표기법으로 네이밍을 하는 개발자들도 자주 볼 수 있다.


    • Test011
    // ○ 퀴즈
    // 직사각형의 넓이와 둘레를 구하는 프로그램을 구현한다.
    // → 가로 : 10, 세로 : 20

    // 실행 예)
    // 넓이 : xxx
    // 둘레 : xxx
    // 계속하려면 아무 키나 누르세요...

    // ※ 문제 인식 및 분석
    // 직사각형의 넓이와 둘레를 구하는 공식
    // 넓이 : 가로*세로;
    // 둘레 : (가로+세로) * 2;

    풀이)

    더보기
    public class Test011
    {
    	public static void main(String[] args)
        {
        	// 주요변수 선언 및 초기화
            int w = 10 , l= 20;		// 직사각형의 가로, 세로
            int area, round;		// 직사각형의 넓이, 둘레
            
            // 연산 및 처리
             area = w * l ;
             round = (w + l) * 2;
             
             // 결과 출력
             System.out.printf("넓이 : %d\n", area);
             System.out.printf("둘레 : %d\n", round);
        }
    }
    
    // 실행 결과
    /*
    넓이 : 200
    둘레 : 60
    계속하려면 아무 키나 누르십시오 . . .
    */
    ※ System.out.printf () 사용시 주의 사항
    - %c : 문자  /  %d : 정수형  /  %f : 실수  /  %s : 문자열 데이터
    잘 구분해서 써야 원하는대로 데이터 출력이 가능

    BufferedReader 클래스
    (자바의 기본 입출력 파트)
    • Test012
       - 변수와 자료형
       - 자바 기본 입출력 : BufferedReader 클래스
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    //	---------------------------------------                      ----------
    // BufferedReader br = new BufferedReader()                      바이트 입력 값
    // 문자 입력을 읽어들이는 장치               -----------------------
    //                                          new InputStreamReader()
    //                                          바이트 → 문자 번역기
    더보기
    // 클래스 인스턴스 생성구문
    - BufferedReader br = new BufferedReader();

    // 현실에 존재하지 않은 무언가를 새로 만들기 위해 new를 입력해주고, 끌어올 수 있는 주소를 import로 올려둠
    // 기능,동작,행위를 하는 것들은 모두 메소드이기 때문에 () 가 붙음
    - import java.io.BufferedReader;
    - import java.io.InputStreamReader;
    - import java.io.IOException;

    // import 구문의 위치는 class 위에 작성한다.// 자바 프로그램에 '키보드'를 입력하는 과정이라고 보면 됨 - 왜냐하면 사용자로부터 값을 입력받아오기 때문에 

    // br.readLine();
      → 입력값(입력 대기열에 남아있는 값)을 "문자열"로 반환

    // public static void main(String[] args) throws IOException
                                                                 ---------------------------
                                                                 인풋, 아웃풋에 에러가 있으면 자바가 예외처리를 해도 된다고 허용하는 문구
    /*================================================
    	   ■■■ 자바 기본 프로그래밍 ■■■
     - 변수와 자료형
     - 자바 기본 입출력 : BufferedReader 클래스
    ================================================*/
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Test012
    {
    	public static void main(String[] args) throws IOException
    	{
       		// 키보드 장착(생성)
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    		// 주요 변수 선언
    		int r;                      //-- 반지름
    		final double PI = 3.141592; //-- 원주율(π) ----------- 변수의 상수화 『final』
    		double a, b;                //-- 원의 넓이, 둘레
    
    		// 연산 및 처리
    		// ① 사용자에게 안내 메세지 출력
    		//System.out.println("원의 반지름 입력 : ");          //-- 줄이 바뀌어 아래쪽에서 입력 커서가 나오기 때문
    		System.out.print("원의 반지름 입력 : ");
    
    		// ② 사용자가 입력한 값을 받아와서 반지름 변수 r 에 담아내기
    		//r = br.readLine();  //-- BufferedReader 의 readLine()
    							  //	→ 입력값(입력 대기열에 남아있는 값)을 "문자열"로 반환 					  
    							  //    -------------------------- 도구 (숫자모양의 문자열 → 정수)
    		// r = "5000";
    		//		------ → 정수 형태로 변환하는 과정 필요
    		//                ----------------
    		//				  도구(숫자모양의 문자열 → 정수)
    		//				  ----
    		//					『parseInt()』 → Integer.parasInt()
    		//					"가나다" → 정수 -------(X)변환 불가
    		//					"2500"   → 정수 -------(O) 2500
    
    		// Integer.parseInt("2500"); → 2500
    		//-- 매개변수로 넘겨받은 문자열 데이터를 정수형으로 반환
    		//	단, 이 때 넘겨받는 문자열 데이터는 숫자 형태(Number format)여야 한다.
    
    		r = Integer.parseInt(br.readLine());
    		// r = Integer.ParseInt("2500");
    		// r = 2500;
    		//-- 사용자가 입력한 값을 br 즉 BufferReader 의 『readLine()』
    		//	메소드를 활용하여 문자열로 읽어들인 후
    		//	그 값을 『Integer.parseInt()』를 통해 숫자형(정수형)으로 변환한 후
    		//	정수 형태의 반지름 변수 r 에 담아내는 과정을 수행한다.
    
    		// ③ 넓이 및 둘레 계산 (연산)
    		//	→ 각각 변수 a 와 b 에 담아내기
    		a = r * r * PI;
    		b = r * 2 * PI;
    
    		//printf()
    		System.out.printf(">> 반지름이 %d인 원의 넓이는 %.2f 이며,\n", r, a);
    		System.out.printf(">> 반지름이 %d인 원의 둘레는 %.2f 이다.\n", r, b);
    	}
    }
    
    //실행 결과
    /*
    원의 반지름 입력 : 55
    >> 반지름이 55인 원의 넓이는 9503.32 이며,
    >> 반지름이 55인 원의 둘레는 345.58 이다.
    계속하려면 아무 키나 누르십시오 . . .
    */

    Test013

    ○ 퀴즈
    // 삼각형의 밑변의 길이와 높이를 사용자로부터 입력받아
    // 이 삼각형의 넓이를 구하는 프로그램을 구현한다.

    // 실행 예)
    // ■ 삼각형 넓이 구하는 프로그램 ■
    // - 삼각형의 밑변 입력 : 3
    // - 삼각형의 높이 입력 : 5
    // >> 밑변이 3, 높이가 5인 삼각형의 넓이 : xxx
    // 계속하려면 아무 키나 누르세요...

    // ※ 문제 인식 및 분석
    // 삼각형의 넓이 = 밑변 * 높이 / 2
    // 사용자로부터 데이터를 입력받아 처리 → BufferedReader 활용
    // BufferedReader 를 여러 개 사용? 한 개 사용?
    풀이)
    더보기
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Test013
    {
    	public static void main(String[] args) throws IOException
    	{
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		// 주요 변수 선언
    		int a, b;       // 밑변, 높이
    		double x;		// 삼각형의 넓이
    		
    		
    		// 연산 및 처리
    		// ① 사용자에게 받을 데이터 안내 메세지 출력 - 밑변 받아오기
    		System.out.println("■ 삼각형 넓이 구하는 프로그램 ■");
    		System.out.print("- 삼각형의 밑변 입력 : ");
    
    		// ② 사용자가 입력한 값을 받아와서 변수 a에 담아내기
    		a = Integer.parseInt(br.readLine());
    
    		// ③ 사용자에게 받을 데이터 안내 메세지 출력 - 높이 받아오기
    		System.out.print("- 삼각형의 높이 입력 : ");
    
    		// ④ 사용자가 입력한 값을 받아와서 변수 b에 담아내기
    		b = Integer.parseInt(br.readLine());
    
    		// ⑤ 넓이 계산 (연산)
    		x = (double)(a * b) / 2;
    		
    
    		// 결과 출력
    		System.out.printf(">> 밑변이 %d, 높이가 %d인 삼각형의 넓이 : %f\n", a, b, x);
    	}
    }
    
    //실행 결과
    /*
    ■ 삼각형 넓이 구하는 프로그램 ■
    삼각형의 밑변 입력 : 3
    삼각형의 높이 입력 : 5
    >> 밑변이 3, 높이가 5인 삼각형의 넓이 : 7.500000
    계속하려면 아무 키나 누르십시오 . . .
    */

    • Test014
       - 변수와 자료형
       - 자바 기본 입출력 : BufferedReader 클래스
    더보기
    /*================================================
    	   ■■■ 자바 기본 프로그래밍 ■■■
     - 변수와 자료형
     - 자바 기본 입출력 : BufferedReader 클래스
    ================================================*/
    
    // 사용자로부터 이름, 국어점수, 영어점수, 수학점수를 입력받아
    // 이름과 총점을 출력하는 프로그램을 구현한다.
    
    // 실행 예)
    // 이름을 입력하세요 : 행성c
    // 국어 점수 입력 : 90
    // 영어 점수 입력 : 80
    // 수학 점수 입력 : 70
    
    // ====[결과]====
    // 이름 : 행성c
    // 총점 : 240
    // 계속하려면 아무 키나 누르세요...
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.IOException;
    
    public class Test014
    {
    	public static void main(String[] args) throws IOException
    	{
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    		String name;				// 이름
    		int a,b,c;					// 국어점수, 영어점수, 수학점수
    		
    		int total;					// 총점
    		
    		System.out.print("이름을 입력하세요 : ");
    		name = br.readLine();
    
    		System.out.print("국어 점수 입력 : ");
    		a = Integer.parseInt(br.readLine());
    
    		System.out.print("영어 점수 입력 : ");
    		b = Integer.parseInt(br.readLine());
    
    		System.out.print("수학 점수 입력 : ");
    		c = Integer.parseInt(br.readLine());
    
    		total = a + b + c;
    
    		System.out.println();
    		System.out.println("====[결과]====");
    		System.out.printf(" 이름 : "+ name);
    		System.out.printf("\n 총점 : %d\n", total);
    
    	}
    }
    
    // 실행 결과
    
    /*
    이름을 입력하세요 : 행성c
    국어 점수 입력 : 90
    영어 점수 입력 : 80
    수학 점수 입력 : 70
    
    ====[결과]====
     이름 : 행성c
     총점 : 240
    계속하려면 아무 키나 누르십시오 . . .
    
    */

    자바 기본 입출력 
    - System.in.read();
    - System.in.skip();
    『System.in.read()』 메소드는 (입력 대기열로부터) 한 문자만 가져온다.
    단, 입력받은 하나의 문자를 문자 그대로 가져오는 것이 아니라 ASCII Code 값으로 반환한다.
    • Test015
      - 자바 기본 입출력 : System.in.read() + System.in.skip()
    더보기
    /*================================================
    	   ■■■ 자바 기본 프로그래밍 ■■■
     - 자바 기본 입출력 : System.in.read()
    ================================================*/
    
    // 실행 예)
    // 한 문자 입력 : A
    // 한자리 정수 입력 : 9
    
    // >> 입력한 문자 : A
    // >> 입력한 정수 : 9
    // 계속하려면 아무 키나 누르세요...
    
    import java.io.IOException;
    
    public class Test015
    {
    	public static void main(String[] args) throws IOException
    	{	
    		// 주요변수 선언
    		char ch;					//-- 입력받은 문자를 담을 변수
    		int n;						//-- 입력받은 정수를 담을 변수
    
    		//char temp;					//-- 임시 (방법1)
    
    		//연산 및 처리
    		// - 사용자에게 안내 메세지 출력
    		System.out.print("한 문자 입력 : ");
    		ch = (char)System.in.read();
    
    
    		//입력 대기열에 남아있는 엔터 (『\r』『\n』)를 스킵(건너뛰기)
    		System.in.skip(2);
    		//-- 매개변수 (2)에 의해 두 글자를 읽어내지 않고 건너뛴다. (버린다.)
    
    		// - 사용자에게 안내 메세지 출력
    		System.out.print("한 자리 정수 입력 : ");
    		//n = System.in.read();
    		//temp = (char)System.in.read();			//-- (방법1)
    
    		n = System.in.read();
    
    		// 1 → 49
    		// 2 → 50
    		// 3 → 51
    		//  :
    		// 9 → 57
    
    		// n을 48만큼 감소 시켜라~!!!
    
    		n -=48;
    
    		// 결과 출력
    		System.out.println();					// 개행
    		System.out.println(">> 입력한 문자 : " + ch);
    		//System.out.println(">> 입력한 정수 : " + n);
    		//System.out.println(">> 입력한 정수 : " + temp);		//-- (방법1)
    	
    		System.out.println(">> 입력한 정수 : " + n);
    		}
    }

     

    // 개인적 감상

    더보기

    클래스명을 짓는 법이 매우 다양했다.

    그래서 코딩이라는 것이 같은 팀 구성원들 (이외에도 협력하는 사람) 끼리도 정보를 공유하고 협업하기 위해 많은 약속을했고, 이는 단지 한사람의 개발자가 혼자 기계와 소통하여 만들어내는 것이 아니라는 것을 확인할 수 있었다.

    자바가 고등언어이기 때문에, 사용자에게 가까워 사용자의 생각을 표현하는 것이 쉽다고 했다. 하지만 그럼에도 불구하고  System.in.skip() 을 보면서 기계는 정말 시키는 것만 잘 한다는 것 그래서 사용자가 기계적 관점으로 일일이 잘 지정을 해줘야한다는 것을 알 수 있었다.

     

    728x90
Designed by planet-si