20240904

Dodo Lee·2024년 9월 4일

※배열 연습 문제※

사용자가 입력한 배열의 길이만큼의 문자열 배열을 선언 및 할당하고
배열의 인덱스에 넣을 값 역시 사용자가 입력하여 초기화 하세요.
단, 사용자에게 배열에 값을 더 넣을지 물어보고 몇 개를 더 입력할 건지,
늘린 곳에 어떤 데이터를 넣을 것인지 받으세요.
사용자가 더 이상 입력하지 않겠다고 하면 배열 전체 값을 출력하세요.

== 실행 화면 ==

배열의 크기를 입력하세요 : 3
1번째 문자열 : 자바의 정석
2번째 문자열 : 알고리즘
3번째 문자열 : C프로그래밍
더 값을 입력하시겠습니까?(Y/N) : y
더 입력하고 싶은 개수 : 2
4번째 문자열 : 인간관계
5번째 문자열 : 자기계발
더 값을 입력하시겠습니까?(Y/N) : y
더 입력하고 싶은 개수 : 1
6번째 문자열 : 영단어600
더 값을 입력하시겠습니까?(Y/N) : n
[자바의 정석, 알고리즘, C프로그래밍, 인간관계, 자기계발, 영단어600]

== 풀이 ==

1. 첫 배열 크기 지정

System.out.print("배열의 크기를 입력하시오 : ");
int size = sc.nextInt();
sc.nextLine();
String[] arr = new String[size];

2. 첫 배열에 저장할 문자열 일렵받기

for(int i = 0 ; i < arr.length ; i++) {
  System.out.print((i+1) + "번째 문자열 : ");
  arr[i] = sc.nextLine();
}

3. 반복이 시작되는 구간부터 무한반복하는 while 작성하여 내부에 종료조건 만들어서 break

while(true) {
  System.out.print("더 값을 입력하시겠습니까?(Y/N) : ");
  char ch = sc.nextLine().charAt(0);

4. 값을 더 입력할 경우

  if(ch == 'y' || ch == 'Y') {
    System.out.print("더 입력하고 싶은 개수 : ");
    int addSize = sc.nextInt();
    sc.nextLine();
    String[] newArr = new String[arr.length + addSize];
    for(int i = 0; i < newArr.length; i++) {
      if(i < arr.length) {
        newArr[i] = arr[i]; 
      }else { 
        System.out.print((i+1) + "번째 문자열 : ");
        newArr[i] = sc.nextLine();
      }
    arr = newArr;
  }

5. 값을 더 입력하지 않을 경우

else if(ch=='n' || ch == 'N') {break;}

6. 잘못 입력한 경우

else { System.out.println("잘못 입력하셨습니다. 다시 입력해주세요.");}

7. 배열 값 모두 출력

}
System.out.println(Arrays.toString(arr));

※ OOP(Object Oriented Programming) ※

Object : 객체, 사물, 물체
Oriented : 지향하다(목표로 한다)
Programming : 코딩 방법
--> 객체 지향 언어

  • 객체 : 독립적으로 각각 구분해서 인식할 수 있는 모든 것
    ex) 물건, 물체, 요소, 대상 ..
  • 지향 : 어떠한 것을 목표로 함
  • 객체 지향 : 독립적으로 각각 구분해서 인식할 수 있게끔 하는 것을 목표로 함!

== 객체 지향 3+1 대 특징 ==

1. 캡슐화(Encapsulation)

  • 모아두는 역할
  • 외부로부터 보호하는 역할
    : 추상화를 통해 정리된 데이터들과 기능을 하나로 묶어 관리하는 기법
    : 클래스의 가장 중요한 목적인 "데이터의 직접 접근제한을 원칙"으로 하여
    클래스 외부에서 데이터의 직접적인 접근을 막고,
    대신 간접적으로 데이터에 접근(getter / setter)할 수 있도록 메소드를 클래스 내부에 작성하는 방법
    ☆캡슐화 원칙
    1) 클래스의 멤버 변수에 대한 접근 권한은 private을 원칙으로 한다
    2) 클래스의 멤버 변수에 대한 연산처리를 목적으로 하는 멤버 메소드는 클래스 내부에 작성한다
    3) 멤버 메소드(getter / setter)는 클래스 밖에서 접근할 수 있도록 public으로 설정한다.

2. 상속(Inheritance)

  • 재사용

3. 다형성(Polymorphism) : 굉장히 중요!!!

  • 다양한 형태를 지님

+ 추상화 (Abstraction) // 자바의 기본

  • 공통된 코드만 작성
  • 유연성을 확보하기 위해 구체적인 것은 제거
  • 작성하려는 클래스의 속성과 기능 중
    프로그램에서 필요한 공통점만 추출하고, 불필요한 부분을 제거하는 과정

== 객체 지향 언어 ==

1. 현실에서 객체(Object)란?

  • 자신의 속성(값, data)과 기능(동작, 행동)이 다른 것들과 구분되어 식별 가능한 것

2. 클래스 : 굉장히 중요!!!

  • 객체의 특성(속성, 기능)에 대한 정의를 한 것(설계도, 빵 틀과 비슷)
  • 클래스 작성시 반드시 필요한 것
    : 객체 지향 언어의 특징 중 추상화, 캡슐화가 적용되어야 함
profile
연습생

0개의 댓글