/ LECTURE

Java - Method

이 페이지는 다음에 대한 공부 기록입니다

JAVA(자바), Python(파이썬) 기반의

AI 활용 응용 소프트웨어 개발자 양성 과정

2021.11.10. ~ 2022.05.18.

찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요

12일차 수업

========복습========

요구사항 : 사용자에게 학생의 과목 점수를 취합하여 개인별 과목 점수와 총점, 과목별 학생들의 합계를 구하는 프로그램을 만들어 주세요

Scanner sc = new Scanner(System.in);

System.out.println("성적 취합 프로그램입니다.");

System.out.println("학생의 수를 입력해주세요");
int student = sc.nextInt();
sc.nextLine();

System.out.println("과목의 수를 입력해주세요");
int subjectNum = sc.nextInt();
sc.nextLine();

String[] subject = new String [subjectNum];

for(int i = 0; i < subjectNum; i++) {
    System.out.println((i+1) + "번째 과목을 입력해주세요");
    String subjectName = sc.nextLine();
    subject[i] = subjectName;
}

int[][] getScore = new int [student][subjectNum+1];


for(int i = 0; i < student; i++) {
    int sum = 0;
    System.out.println((i+1) + "번째 학생의 점수를 입력합니다.");
    for(int j = 0; j < subjectNum; j++) {
        System.out.println(subject[j] + " 점수를 입력해주세요");
        int score = sc.nextInt();
        sc.nextLine();
        getScore[i][j] = score;
        sum += score;
    }
    getScore[i][subjectNum] = sum;
}


for(int i = 0; i < student+2; i++) {
    for(int j = 0; j < subjectNum+2; j++) {
        if(i == 0 && j == 0) {
            System.out.print("\t");
        }else if(i == 0) {
            if(j == subjectNum+1) {
                System.out.println("총점");
            }else{
                System.out.print(subject[j-1] + "\t");
            }
        }else if(i == student+1) {
            if(j == 0) {
                System.out.print("합계" + "\t");
            }else if(j == subjectNum+1) {
                int totalsum = 0;
                for(int k = 0; k < student; k++) {
                    totalsum += getScore[k][j-1];
                }
                System.out.println(totalsum);
            }else {
                int subsum = 0;
                for(int k = 0; k < student; k++) {
                    subsum += getScore[k][j-1];
                }
                System.out.print(subsum + "\t");
            }
        }else {
            if(j == 0) {
                System.out.print(i + "번 \t");
            }else {
                if(j == subjectNum+1) {
                    System.out.println(getScore[i-1][j-1] + "\t");
                }else {
                    System.out.print(getScore[i-1][j-1] + "\t");
                }
            }
        }

    }
}

======== 끝 ========

12일차 수업

절차지향 프로그래밍

상단에서 하단으로 작성

만약에 같은 코드가 필요하면 다시 작성

대표적인 언어 : C 언어

실행 순서가 정해져 있어서 코드의 순서가 바뀌면 결과가 달라진다

장점 : “순서” o “절차”가 컴퓨터의 처리 구조와 비슷해서 실행속도가 빠름

단점 : 개발할 때는 좋은데 수정할 때 어렵다

객체지향 프로그래밍

“객체”라는 것을 이용해서 프로그래밍을 하겠다

OOP(Object Orientied Programming)

대표적인 언어 : Java, Python

객체 : 코드의 블록(“{ }”로 감싸진 ( ex) for, if문 ), 열심히 생각해봐야하는 단어

블록마다 역할을 부여하고 설계하면

  • 블록을 사용하여 알맞은 공간에 넣기도 하고, 모양도 변형할 수 있음

언어에서 지원하는 기능을 사용해야하기 때문에 “문법” 배워야함

“문법”을 이용해 “설계”까지 나아가는 것이 목표

캡슐화(부품화)

부품화하는 과정 : 문법

부품을 재조립하는 과정 : 설계

적당한 부품화가 제일 중요

메소드 : 연관된 부품끼리 사용하는 것들을 그룹핑(그룹화 한다)

부품은 내부코드를 몰라도 누구나 사용할 수 있어야함

인터페이스 : 서로 다른 부품이지만 연결할 때 만큼은 둘 다 호환이 되어야 한다

객체를 규격화, 표준화 한다

메소드

프로그래밍 할 때 가장 작은 단위(java 파일 내에서 실행되는 가장 작은 단위)

  • 윈도우운영체제 > 폴더 > 파일 > 파일내용

  • 자바프로젝트 > 패키지 > 클래스 > 메소드

메소드 안에서는 변수선언, 제어문 작성, 배열 작성 등 프로그래밍을 구현하는 문장들의 묶음

반복적으로 사용하기 위한 프로그래밍 : 메소드 단위 작성

문제가 발생하면 해당 메소드로 가서 유지보수

기능을 찾기 위해서 main 메소드 내부를 찾을 필요가 없어 가독성 상승

컴파일(실행)을 할 때 컴퓨터가 클래스 밑에 있는 모든 메소드를 가장 먼저 생성

구조

  • 접근제어자 반환타입 메소드이름(매개변수) { }

    • 접근제어자, 매개변수 생략가능

    • 반환타입, 메소드이름 필수

  • public static void test(){ 코드 블록 }

    • 선언부 : class { } 안에 작성하며, 다른 메소드 안에 작성하지 못한다

    • 접근 제어자 : public

      • 해당 메소드를 접근할 수 있는 범위(클래스, 패키지 등등)
    • 반환타입 : void

      • 메소드도 프로그램이기 때문에 실행, 종료가 있음

      • 종료했을 때 반환되는 데이터의 타입

    • 메소드 이름 : test

      • 변수처럼 메소드를 호출할 때 사용
    • 매개변수목록 : ( ) 괄호 안의 값

      • 메소드가 호출 될 때 메소드에서 사용할 값의 변수들
    • { } 중괄호로 마무리

      • 구현하는 부분

호출하기

  • 메소드 이름();
- public static void main{ }
  • 클래스 안 메소드 중에 가장 먼저 실행되는 메소드

  • java 파일 내에 main 메소드가 없으면 실행하지 못함

  • main 안에서 호출해야 실행 가능

매개변수 : 메소드에서 사용할 변수, 파라미터

메소드 이름(argument(인자));

인자는 메소드에서도 정의가 되어있어야함

매개변수 : 인자로 넘어올 값을 함수 내에서 사용하기 위한 변수로 미리 선언 하는 값

자료형과 변수 이름 작성해주면 매개변수 준비완료

static void numbering(int limit){ code block };
  • 매개변수가 2개 이상일 경우 각각 자료형과 변수명을 작성해주면 됨

  • 각 매개변수간 구분은 쉼표(,)

  • 인자와 매개변수의 작성순서, 개수, 데이터 타입은 동일해야함