본문 바로가기

KOSTA

KOSTA 교육 (객체지향 ,  생성자, 배열)

배운 내용

 

  1. 객체지향(OOP)
  2. 생성자(Constructor)
  3. 배열(Array)

오늘은 어제에 이어 객체지향에 대해 조금 더 파고드는 시간이었다. 대표적인 예제인 ‘전화번호부'를 만들어보며 객체지향을 이해해보자.
예제로 들어가기 전 다시 한 번 객체지향과 생성자의 개념을 복습하고 시작하면 좋을 것 같다.

 

1. 객체지향(OOP)

객체지향은?

서로간의 상호작용을 하는 현상이며 ‘상태’ ‘행동’으로 구분되어진다.

 

  • 객체지향은 ‘확장성’이 있다.
  • 시대의 흐름으로 인하여 객체지향언어의 필요성을 느껴 발전하였다.
  • 서로간의 상호작용하는 객체들로 이루어진 프로그램이다.

객체지향의 특징

 

  • 객체를 만들기 위해선 class가 필요하다.
  • class는 객체의 모양을 갖추고 있어야 한다.
  • class는 객체를 무제한 생성할 수 있다.
  • new 연산자를 통하여 객체를 생성한다.

2.생성자(Constructor)

생성자는?

 

  • new 연산자를 호출하였을 때 자동으로 생성하는 것
  • 객체를 초기화 하는데 사용한다.
  • 객체를 생성할 수 있는 가이드라인이 된다.

생성자의 특징

 

  • 생성자는 return, void를 사용하지 않는다.
  • 생성자는 자신의 class이름과 반드시 동일해야한다.
  • public class이름(){}; 을 사용하여 default 오류를 항상 대비한다.

3. 객체 내 배열

객체 내 배열은?

객체 메소드 내에 배열을 생성하는 것을 말한다.

 

  • Bank 클래스를 보면 생성자를 생성한 것을 알 수 있다.
  • 여기서 Main메소드로 에서 생성자를 배열을 생성할 수 있는데 생성 방법은 다음과 같다
  • 생성된 class 이름 arr[] = { new 생성할 클래스 이름 ( 파라미터 값1, 파라미터 값2 … )};
  • 이렇게 생성된 배열은 for문을 사용하여 출력해준다.

 

  • Main클래스에서는 객체를 출력하여 출력하는 역할을 한다. 객체는 class로 선언하였고 while(true)문으로 참 거짓을 판별한다.
  • 출력할 요소들을 선언하고 switch문을 이용하여 각 요소별 메소드를 호출시킨다.
  • 마지막 6번은 종료를 위하여 return 값을 준다.

 

  • PhoneInfo 클래스에선 생성자에 선언될 파라미터 값을 선정한다.
  • 이 변수는 클래스의 주제에 해당되는 변수들을 선정한다.
    예를들어 현재 예제의 전화번호부 같은 경우 (이름, 전화번호, 생년월일)로 정하였기 때문에 이 세가지의 변수가 필요한 것이다.
  • 오류를 막기 위해 default 생성을 해준다.
  • 해당 변수의 생성자를 생성한다. 이 생성자는 나중에 출력 할 때 사용된다.
  • 이 생성자들을 출력해주기 위하여 새로운 show메소드를 사용하여 출력을 해준다.

 

  • 먼저 PhoneInfo클래스에 대한 배열을 선언한다. 그래야 배열을 Manager 클래스에서도 사용이 가능하다.
  • 추가 메소드를 선언하고 입력받을 값을 선언한 후에 배열에 count++를 선언하고 추가 된 인원 수 만큼 배열에 추가될 수 있도록 new로 새로운 연산자를 선언한다.
    예시에 대한 이해가 쉽게 count의 값은 3이라고 가정을 하겠다.
  • 전체 출력 메소드를 선언하고 i가 0, i가 count보다 작을 때 배열의 주소값에 할당된 값을 실행한다. 총 3명을 실행했으니 출력도 마찬가지로 3명이 나와야 하므로 i는 0, 1, 2세 주소값이 출력된다.
  • 검색 메소드를 선언하고 검색할 이름을 입력한다.
    여기서 index값을 선언하는데 -1로 선언한다. 이유는 i와 쉽게 구별시키기 위해 음수로 선정하는 것이다. for문을 사용하여 i가 count-1보다 작거나 같을 때 만약 이름이 동일하다면 index는 i가 된다. 즉, 동일한 값이 된다는 뜻이다. 만족이 된다면 break로 빠져나온다.
    이 때 없는 경우도 생각해야 하는데 if문을 사용하여 -1이 아닐 경우 존재하지 않는다고 출력하고 출력이 안된다면 있다는 것으로 show()메소드를 배열index로 출력한다.
  • 변경 메소드를 선언하고 변경할 이름을 입력한다.
    검색과 동일하게 index를 선언하고 for문을 이용하여 이름이 동일하다면 번호를 바꿀 수 있도록 선언한다. 입력하면 배열을 이용하여 입력값이 적용되게 하고 break로 끝낸다. 대상이 없는 경우는 검색과 동일하며 대상이 있다면 수정 완료를 출력한다.
  • 삭제 메소드를 선언하고 삭제할 이름을 입력한다.
    동일하게 index를 선언하고 for문을 사용하여 이름이 동일한지 확인한다.
    만약 동일하면 break로 반복을 끝내고 if문으로 index값이 -1이 아니라면 for문을 이용하여 i와 값을 동일하게 하고 count 3보다 작을 때 만약 i가 10이 아니라면 arr[i]에 arr[i+1]를 스왑한다.
    그리고 arr[count-1] 주소값이 삭제된 값이 되므로 null을 선언하여 빈 공간임을 선언하고 count 증감을 통해 빠지면 하나씩 줄어들게 선언한다.