[2023.09.20] 개발자 교육 3일 차 : 강의-무한복습, 깃, 리턴타입 실습[구디 아카데미/김승수 강사님]

DaramGee·2023년 9월 20일
0

오늘 정리

코딩을 배우려면, 하나의 코드를 다양한 방식으로 생각하고 뜯어고치면서 새롭게 시도해야한다. 일단 아는 것 부터 한 줄 써보자

리턴타입이란? 지금까진 public (static) void mehtodA(){} 로 선언했던 메소드를 호출하는것에 그치는 것이 아니라 그 응답값을 활용하는 것이다(아직..헷갈려ㅠ)

복습

1. 변수

  • 변수의 특징 → 하나의 변수에는 하나의 값만 저장됨.
  • 변수의 종류
설명위치인스턴스화
전역변수인스턴스화 o / 클래스 전역에서 사용할 수 있음(같은 이름 변수명 절대 허락x클래스 선언 다음(단, 선언과 초기화를 분리해서 작성할 수 없다) 초기화 생략 가능인스턴스변수.전역변수
지역변수인스턴스화 x / 메소드 내부, 생성자 내부에서만 사용메소드 내 위치(메소드 안에서는 선언만 해도 됨)호출x
정적변수하나만 만들어져서 공유(싱글톤)클래스명 정적변수
  • 변수 확인
    • 변수 생성 위치, 인스턴스화 모양을 통해 변수를 확인할 수 있음.
    • 코드 전체를 볼 수 있는 눈 필요 → 추후 인스턴스화할 때 변수의 종류에 따라 다름
      • 전역변수 : 인스턴스변수.전역변수
      • 정적변수 : 클래스명 정적변수
  • 변수 타입
    • int
    • double
    • boolean : if문, for문에서 중요한 역할

2. 인스턴스화


  //Test2 클래스에 P클래스가 생성되어있는 상황 
package com.step1;

public class Test4 {
	//메인 메소드는 콜백이라서 개발자가 호출할 수 없다.
	public static void main(String[] args) {
		//insert -> Test2의 메소드 C 호출(인스턴스화)해보기
//		System.out.println(P.i); //값 : 1 ->  단순히 P클래스에 
		System.out.println(P.i); //값 : 1
		
		Test2 t2 = new Test2(); //메소드 C를 인스턴스화 후 불러올 땐 메소드C의 값이 출력
		t2.methodC();
		System.out.println(P.i); //값 : 3 
		//메소드C를 경유하였기 때문에 P클래스의 i는 1에서 3으로 변경된 결과가 유지되고 있음.

		t2 = new Test2();//메소드 c를 경유하지 않았기 때문에 합법
		t2.methodC();
		//3 예상 -> 인스턴스화 할 때 초기화가 1로 되었다. P가 1을 갖고 있기 때문에 두 번 호출되어도 그 합은 3일 것이다.
		//5 예상 -> 인스턴스화 두번(객체가 또 만들어진 것), 메소드 두 번 호출했으니 1에 2가 두번 더해지지 않았을까?
		System.out.println(P.i); //값 : 5
	}//end of main
}//end of Test1
  • 인스턴스화의 경우,
    • 다른 클래스에 저장된 메소드를 활용할 수 있음.
    • 내가 정의한 메소드, 다른 곳에서 호출하려는 메소드는 모두 인스턴스화가 필요
    • 한 메인메소드에서 동일한 인스턴스화가 여러번 진행할 수 있음.
    • 진행할 때마다 새로운 객체가 또 만들어지는 것으로 이해하는 것 필요
  • A a = new A(); → a가 인스턴스 변수
  • 주소번지 or 인스턴스변수.소유주.메소드();
  • 클래스.변수(static 붙은)
    • static이 붙은 변수 i는, 인스턴스화 할 때 인스턴스 변수가 아닌 클래스 이름을 붙인다 -> "클래스.변수”

3. 코딩 작성법

  • 클래스선언 → 메인선언 → 생성부 작성 (순)
  • f6 → 브레이크 포인트, 북마크에서만 이동
  • f5 → 호출되는 메소드 안에 들어가서 따라서 추적

4. 디버깅 모드

  • 브레이크 포인트 → 북마크 추가

강의

1. 팁

  • alt + 방향키 → 코드 이동
  • 플러스로 네트워크 부분 학습(네트워크 유경험자 우대..?)
    • 여러 지식을 쥐고 있으다면 도움이 됨.
  • 하나의 소스를 여러 방식으로 만져보면서 배워보기
    • 이렇게 호출해보려면? 이건? 등

2. 깃허브 & 깃

  • 깃허브
    • Repositories(저장소, 클라우드)
      • 로컬
      • 웹 → 깃허브
    • 깃허브에 저장된 코드로부터 문제를 해결한 부분을 확인할 수 있음.
    • create 레포지토리
      • README : 대문 페이지
      • gitignore : 추후 숨기기
      • 연결방법
        • 코드에서 주소 확인 및 복사

        • 커맨드 복사 1 (cmd에서 config git 입력)

          [core]
          	editor = code
          [user]
          	name = 본인이름
          	email = 본인이메일계정
          [core]
          	autocrlf = true
              editor = code --wait
          [pull]
              rebase = false
          [diff]
              tool = vscode
          [difftool "vscode"]
              cmd = code --wait --diff $LOCAL $REMOTE
          [merge]
              tool = vscode
          [mergetool "vscode"]
              cmd = code --wait $MERGED
          [alias]
              st = status
          	hist = log --graph --all --pretty=format:'%C(yellow)[%ad]%C(reset) %C(green)[%h]%C(reset) | %C(white)%s %C(bold red){{%an}}%C(reset) %C(blue)%d%C(reset)' --date=short
          [mergetool]
          	keepBackup = false
        • 커맨드 복사 2

          Clink v1.5.5 is available.                                                                            
        • To apply the update, run 'clink update'.

        • To stop checking for updates, run 'clink set clink.autoupdate false'.

        • To view the release notes, visit the Releases page:
          https://github.com/chrisant996/clink/releases

          C:\Users\GOODEE\Desktop //git 설정창 띄우기
          λ git config --global -e

          C:\Users
          λ d:

          D:\cmder\config\profile.d
          λ cd ..

          D:\cmder\config
          λ cd ..

          D:\cmder
          λ cd .. //한 칸 앞으로 나와짐

          D:\
          λ mkdir git_test //git_test 만들기

          D:\
          λ ls //디드라이브 목록 보기 ls
          '$RECYCLE.BIN'/ git_test/ 'System Volume Information'/
          cmder/ goodee_20230918_public_key/ workspace_java/
          CookieRunFont_TTF/ goodee_20230918_public_key.zip 'workspace_java - 바로 가기.lnk'*
          eclipse/ goodee_20230920/

          D:\ //git_test로 들어가기
          λ cd git_test\

          D:\git_test //url 넣기 git clone
          λ git clone https://github.com/Jeeyeon-Lee/goodee_20230920.git
          Cloning into 'goodee_20230920'...
          remote: Enumerating objects: 3, done.
          remote: Counting objects: 100% (3/3), done.
          remote: Compressing objects: 100% (2/2), done.
          remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
          Receiving objects: 100% (3/3), done.

          D:\git_test //잘 연결되었는지 확인
          λ cd goodee_20230920\

          D:\git_test\goodee_20230920 (main -> origin) //잘 연결되었는지 확인
          λ

  • 깃 → 버전 관리
    • 분산형 버전 관리 시스템(Version Control System) 의 한 종류
    • 버전 관리(복사, 백업, 저장)
    • 필요성
      • 모두 같은 환경에서 개발하여 불필요한 시간을 없애고 서로 주고 받는 와중에 일어나는 충돌을 최소화 하는 것
      • 프레임워크를 갖추고 공통으로 쓰는 코드들을 미리 넣어두고, 테스트 코드나 샘플코드들을 넣어주어서 프로젝트 개발 시작하기전에 팀원 모두 같은 코드로 테스트할 수 있는 환경도 제공

3. 실습

  • 메소드 선언하기
    • 리턴타입을 결정해 주세요
    • 파라미터가 필요한가요?
      필요하다면 몇개가 필요할까요?
    • 나만 사용할건지 아님 공유할건지 결정하자 - private, public
    • public > protected > friendly(접근할 수 없음) > private
  • 메소드를 선언하는 문장
    • (접근제한자→생략가능) 리턴타입(void, 원시형타입, 참조형타입 →주소번지) 메소드 이름(빈상태 or 한 개 or 두 개 이상)
    • 예 :
        public   String  login  (String id, String pw){return "나 신입";}      //,는 열거형 연산자, 리턴되는 값은 앞선 리턴타입에 맞춘 값만 들어올 수 있음.
      (접근제한자)  타입  메소드       메소드 값
    • 리턴 타입에 나오는 형태를 맞춰야 함.
    • 파라미터 자리는 지역변수를 선언만 하고, 호출 할 때 그 자리에 그 값이 결정됨
    • 리턴값 아래에는 새로운 변수 선언을 하면 x
  • 실습 코드(로그인 시 id, pw str 형식으로 메소드 선언하기)
package com.step2;

public class Method1 {
	public String login(String id, String pw){
		System.out.println("사용자가 입력한 id ==> " + id + ", 사용자가 입력한 비번은 ==> " + pw);
		String name = "나 신입";
		return name;
}
	public int methodA() {     //리턴타입과 맞는 리턴값 불러오는 예시
		return 10; 
	}
	public double methodB() {  //리턴타입과 맞는 리턴값 불러오는 예시
	return 10.0;
	}
	public boolean methodC() { //리턴타입과 맞는 리턴값 불러오는 예시
		return false;
	}	
	public void methodD() {    //리턴타입과 맞는 리턴값 불러오는 예시
	}

	public static void main(String[] args) {
		Method1 m = new Method1();
		String name = m.login("kiwi","111");
		System.out.println(name);
	}
}
  • 하나의 코드를 여러 방법으로 풀어보는 것 연습

  • 내가 연습으로 만들어 본 10명의 학생의 점수로 합, 평균을 내는 코드(GPT 도움 필수ㅠㅠ)
package com.step2;

import java.util.Scanner;
public class SungJukPractice {

	//Scanner : 콘솔, 소스에서 데이터를 읽어서 여러 작업을 진행
	//nextInt() : 다음으로 오는 정수 값을 반환
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int total = 0;

        System.out.println("10명의 학생들의 받아쓰기 점수를 입력하세요.");

        for(int i=0; i < 10; i = i + 1) {
            System.out.print("학생 " + (i + 1) + "의 점수: ");
            int score = scanner.nextInt();
            total += score;
        }

        double average = (double) total / 10;

        System.out.println("합계: " + total);
        System.out.println("평균: " + average);
	    }
}

0개의 댓글