본문 바로가기

분류 전체보기106

[Java] 07. Is Kind Of 관계, Has A 관계 Is Kind Of 관계(ISA 관계, 상속관계)포유류 ← 고양이과 ← 호랑이 처럼 명확한 종속관계를 보일때 상속(extends)을 고려한다. 이를 Is Kind Of 관계 또는 ISA 관계라고 명칭하며, [호랑이 is 고양이과], [고양이과 is 포유류] 라고 표현하고, UML 상에서는 Generalization(△)으로 정의한다. Has A 관계 (포함관계) 대부분의 자연계의 질서에서는 상속관계가 명확하지만, 인간 사회에 체계를 부여해야할 때는 그렇지 않은 경우가 많다. 가령 위의 관계도에서 Gun을 Police에게 상속한다면? Police의 자식클래스인 Nursing Police에게도 자동적으로 상속되기 때문에 문제가 생긴다. 따라서 필요한 경우에만 사용하는 Has A 관계를 적용해야 한다. 그리고.. 2019. 3. 26.
[Java] 06. String, StringBuilder 속도 비교 String 클래스 변경 방법 String 클래스는 작은 문자의 변화에도 계속 새로 객체(인스턴스)를 생성하기 때문에 문자열의 변경이 불가능하다. 각각 다른 인스턴스이므로 변수간의 해시 값이 다른 것을 확인할 수 있다. 이런 작업이 빈번해지면 성능저하의 요인이 된다. Append: 인덱스 끝에 삽입 Insert: 인덱스 중간에 삽입 String str1 = "Lemon"; String str2 = str1+'a'; // str1.concat('a') String str3 = str2+'b'; String str4 = str3+"cd"; System.out.println(str1); System.out.println(str2); System.out.println(str3); System.out.printl.. 2019. 3. 25.
[Java] 05. static 멤버의 접근 방법과 활용 static 멤버의 접근 방법 1) 클래스 내부에서 자유롭게 접근 2) 클래스 이름으로 접근 3) 객체 이름으로 접근 class AccessWay{ static int num=0; AccessWay(){ incrCnt(); } public void incrCnt() { num++; } } public class ClassVarAccess { public static void main(String[] args) { AccessWay way = new AccessWay(); // 생성자 안에 있는 매서드가 호출됨(num+1) AccessWay.num++; // 클래스명으로 접근(num+1) way.num++; // 객체로 접근(num+1) System.out.println("num = "+AccessWay... 2019. 3. 20.
[Java] 04. 접근 권한(Access Authority) 접근 권한(Access Authority) Public: 어디서나 마음대로 접근 호출가능 Protected: 패키지가 동일하거나 다른 패키지라도 상속이면(권한이 있으면) 접근 호출 가능 Default: 동일한 패키지만 접근 호출 가능 Private: 클래스내에서만 접근호출가능 필드의 접근권한 1) 필드는 일반적으로 private으로 설정한다. 2) 대신 getter나 setter매서드를 이용해서 값을 넣거나 가져올 수 있도록 한다. getter나 setter는 일반적으로 default나 public을 준다. 3) setter 매서드에는 들어오는 값을 확인하는 코드를 넣을 수 있기 때문에 직접 필드에 접근하는 것보다 안전성이 높아진다. 매서드의 접근 권한 1) 매서드는 기본적으로 default나 publi.. 2019. 3. 20.
[Java] 03. 패키지(Package) package는 class보다 상위 분류 개념이며 동시에 폴더구조이다.class 제작시 별도의 package명을 주지 않으면 default package 소속이 된다.다른 package의 클래스를 사용하고 싶으면 import를 한다. - 단축키 [Ctrl + Shift + o]import 없이 사용할 수 있는 package는 자기자신이 속한 package와 java.lang이다.java에서 별도로 접근제한자(private, protected, public)를 주지 않으면 default(동일 패키지 내에서는 접근이 가능) 접근권한을 갖게된다. → java의 공유성을 강화하는 철학※ C언어에서는 default가 private → 보안성을 강화하는 철학 2019. 3. 20.
[Java] 02. 배열의 복사(Arrays.copy) 배열 복사하는 방법 1. HashCode값 복사 (얕은 복사) scores의 해시코드 값이 scores1, scores2에 복사된다. 스택의 같은 공간에 접근함으로 힙에 담겨있는 값을 가져오게 된다. 따라서 기존 배열인 scores가 변경되었을때 이를 복사한 scores1, scores2에서도 변경된 값을 참조하게 된다. int[] scores = {100,85,95,65,75}; int[] scores1 = scores;// 해시코드 값이 복사됨(같은 공간을 참조) int[] scores2 = scores1;// 해시코드 값이 복사됨(같은 공간을 참조) for(int i=0;i 2019. 3. 15.
[Java] 01. nextInt(), nextDouble() 뒤에 nextLine() 사용 nextLine() 사용시 주의사항 nextInt(), nextDouble() 같은 메서드를 사용한 이후 String을 입력받기 위해 nextLine()을 사용하면 버퍼에 남아있는 \n(Enter값)을 읽어들이기 때문에 nextLine() 메서드가 바로 리턴해버린다.그러므로 nextLine()을 호출하기 전에 nextLine()을 한번 써주면버퍼에 있는 \n 읽어버리므로 그 다음 문자열이 잘 읽힌다. 수정 전 op = sc.nextLine(); 에서 \n을 읽어들여 연산자가 입력되지 않고 바로 리턴함. Scanner sc = new Scanner(System.in); double num0=0, num1=0, result=0; String op=""; System.out.print("1번째 숫자 입력: ".. 2019. 3. 13.
[Java] 00. 조건문, 랜덤 - 다이스게임 import java.util.Random; import java.util.Scanner; public class _03_diceGame { public static void main(String[] args) { System.out.print("1~6 정수를 입력하세요: "); Scanner sc = new Scanner(System.in); int userNum = sc.nextInt(); Random rd = new Random(); int comNum = rd.nextInt(6)+1; //0~5에서 1~6으로 구간조정 String result=""; if(userNum>comNum) result = "You Win"; else if(userNum==comNum) result = "Draw"; el.. 2019. 3. 13.
[C#] 주소록 프로젝트 - 클래스 편 주소록 요구사항 이름,전화,주소를 입력/검색/변경/삭제/전체출력 한다. 클래스 정의 1) 시작 클래스2) 주소 클래스(Model) → 데이터 3) 메뉴 클래스(View) → 인터페이스 4) 주소록 관리 클래스(Controller) → 비즈니스 로직## MVC: 일반적인 업무용 프로그램의 정석## 객체화: 다른 클래스의 매서드를 갖다 쓰려면 반드시 객체를 생성해야 한다. new 클래스를 선언할때 메모리에 올라감. 범용적 기능을 가진 매서드 생성법 1) 클래스의 정체성을 훼손하며 편의상 해당 메서드를 자주 참조하는 클래스에 넣음 2) 클래스의 정체성을 유지하며 해당 메서드를 참조하는 클래스에서 (객체를 생성하지 않고) 매서드 앞에 클래스이름. 을 넣어준다. 3) Utility Class로 따로 생성해서 뺀다.. 2019. 3. 12.