27일차 내용 정리

채공부·2025년 7월 1일

Git

🔴 저장소 동기화 & 관리 흐름

새로운 branch를 만들어서 
   commit을 추가하고 
    origin에 push
    
      MY GitHub		        Teacher's GitHub
      (origin)				   (upstream)
     -----------	    	   -----------
    |           |             |           |
     -----------	  pr       -----------
     push ⬆		   ⬈
     -----------	
    |           |    
     -----------
        MY Com

🔴 원격 저장소 동기화 흐름

git status : 워킹트리가 클린한 상태인지 확인
git branch : 현재 내가 어떤 브랜치에 있는지 확인
git switch master : master 브랜치로 이동

<선생님 저장소의 최신 내용 받아오기>
git pull upstream master : 선생님의 master 브랜치에서 최신 변경사항을 받아온다
➜ our_project 폴더에 파일이 추가된 걸 확인 가능

<내 GitHub 저장소로 동기화>
git push origin master : 방금 upstream에서 받아온 변경 사항을 내 저장소(origin)에도 반영
➜ 내 저장소에서 최신 상태로 동기화된 걸 확인 가능
⭐ 선생님이 PR을 수락해 merge되면 해당 branch는 삭제

🔴 공부용 브랜치 생성 & 관리 흐름

git branch : 현재 내가 어떤 브랜치에 있는지 ➜ 확인 현재 master
git branch -D study : study 브랜치 삭제
git branch : study 브랜치 없는 상태인지 확인 가능
git branch study : study 브랜치 생성
git switch study : study 브랜치로 이동

JavaScript

map()

  • 배열 안에 있는 item을 활용해 새로운 배열을 만든다
// Step10_array.html

<h1>배열의 다양한 함수</h1>
<script>
	const nums = [1,2,3,4,5,6,7,8,9,10];
    nums.forEach((item)=>{
		console.log(item);
	});
	// nums 배열 안에 저장된 값을 활용해서 새로운 배열을 만들어준다
	const newNums = nums.map((item)=>{
      	// 여기서 return한 값으로 새로운 배열이 만들어진다
    	return item*2;
    });

	const newNums2 = nums.map((item)=>{
    	return item-2;
    });
</script>
1
2
3
...
10
// newNums
(10) [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
// newNums2
(10) [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]

JAVA

JFrame

  • Graphic User Interface 윈도우를 생성할 때 사용하는 클래스

static final feild

  • 의미 없는 숫자나 값을 의미 있는 상수 이름으로 바꿔주는 역할
  • 관례상 대문자로 정의

예시
EXIT_ON_CLOSE : JFrame 클래스의 static 필드 ➜ 창을 닫을 때 프로그램 종료

CENTER : FlowLayout 클래스의 static 필드 ➜ 가운데 정렬할 때 사용

버튼 동작 처리

JButton btn = new JButton("버튼");
add(btn);

ActionListener : UI에 어떤 동작이 일어났을 때 호출될 예정인 메소드를 가지고 있는 객체
➜ 메소드 1개짜리 인터페이스

  1. 익명 내부 클래스
ActionListener listener = new ActionListener() {
	@Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("버튼 click");
	}
};
btn.addActionListener(listener);
  1. 람다식을 변수에 저장
ActionListener listener = (e)->{
	System.out.println("버튼 click");
};
btn.addActionListener(listener);
  1. 람다식
btn.addActionListener(e->System.out.println("버튼 click"));
  1. 클래스 자체가 ActionListener 구현
public class MyFrame extends JFrame implements ActionListener{
	...
	btn.addActionListener(this);
    
   @Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("버튼 click");	
	}
}
  • 하나의 ActionListener로 여러 버튼 처리
public class MyFrame extends JFrame implements ActionListener{
	...
    JButton btn1 = new JButton("추가");
	JButton btn2 = new JButton("수정");
	JButton btn3 = new JButton("삭제");

	add(btn1);
	add(btn2);
	add(btn3);
        
    // 하나의 액션 리스너(this)를 여러 버튼에 등록
	btn1.addActionListener(this);
	btn2.addActionListener(this);
	btn3.addActionListener(this);
    
    // 버튼별 동작 구분을 위한 ActionCommand 설정
	btn1.setActionCommand("insert");
	btn2.setActionCommand("update");
	btn3.setActionCommand("delete");
    
   @Override
	public void actionPerformed(ActionEvent e) {
		System.out.println("버튼을 눌렀네요! 하지만.. 버튼을 눌렀을까요?");
		
		// Component에 설정된 ActionCommand 값을 가져옴
		String cmd = e.getActionCommand();
		
		// 문자열 비교는 .equals() 사용
		if(cmd.equals("insert")) {
			System.out.println("추가합니다");
		}else if(cmd.equals("update")){
			System.out.println("수정합니다");
		}else if(cmd.equals("delete")) {
			System.out.println("삭제합니다");
        }
	}
}
  • 버튼 클릭 시 숫자 증가
  1. ActionListener 인터페이스 구현
public class MyFrame extends JFrame implements ActionListener{
	// 버튼의 참조값을 담을 필드
	JButton countBtn;
	// 버튼을 누른 횟수를 저장할 필드
	int count;
    
    public MyFrame() {
    	setTitle("나의 프레임");
		setBounds(100, 100, 300, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// 레이아웃 매니저 객체 생성
		FlowLayout layout = new FlowLayout(FlowLayout.CENTER);
		// 프레임의 레이아웃 매니저 설정
		setLayout(layout);
        
    	// 생성자 버튼의 참조값을 필드에 저장하면 객체 안에서 어디서든지 활용 가능
		this.countBtn = new JButton("0");
		add(countBtn);
        countBtn.addActionListener(this);
       
       setVisible(true);
     }
     
	public static void main(String[] args) {
		new MyFrame();
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// count 값을 1씩 증가
		count++;
		// 버튼의 text 를 변경하려면 생성자에서 new JBtton() 했던 참조값을 여기서 사용할 수 있어야 한다
		countBtn.setText(Integer.toString(count));
	}
  1. 람다식 활용
public class MyFrame extends JFrame{
	// 생성자
	public MyFrame() {
		setTitle("나의 프레임");
		setBounds(100, 100, 300, 300);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		// 레이아웃 매니저 객체 생성
		FlowLayout layout = new FlowLayout(FlowLayout.CENTER);
		// 프레임의 레이아웃 매니저 설정
		setLayout(layout);
		
		JButton countBtn = new JButton("0");
		add(countBtn);
		
		countBtn.addActionListener((e)->{
			int count = Integer.parseInt(countBtn.getText());
			count++;
			countBtn.setText(String.format("%d", count));
		});		
        
		setVisible(true);	
	}
	
	public static void main(String[] args) {
		new MyFrame();
	}
}

미사일 게임 만들기

profile
학원 공부 내용 정리

0개의 댓글