백엔드/JAVA 23

13일차 수업 기록

상속 ▶ 클래스 간의 관계 결정하기 - 클래스를 작성할 때, 두 클래스 간의 관계가 상속관계인지, 포함관계인지 헷갈릴 때가 있음 → 아래와 같이 문장을 만들어보면 어떤 관계인지 명확해짐 ① 상속 관계 : ' ~은 ~이다 ( is - a ) ' ② 포함 관계 : ' ~은 ~을 가지고 있다 ( has - a ) ' → 한 클래스의 멤버변수로 다른 클래스 타입의 참조변수를 선언하는 것을 의미 - 예시 class Circle { int x; int y; int z; } class Point { int x; int y; } ❶ 상속 관계 class Circle extends Point { inr r; } ❷ 포함 관계 class Circle { Point p = new Point(); int r; } ❸ main..

백엔드/JAVA 2023.05.15

객체 지향 프로그래밍 이론(4)

상속 - 상속 · 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 → 코드의 추가 및 변경 용이함 ∴ 코드의 재사용성↑, 중복 제거 → 유지보수 쉬워짐 ☞ 첫번째 상속 예시 - 직접 2개의 클래스 ( ChildClass, ParentClass ) 생성해서 상속에 대해 알아보자 package inherit; public class ParentClass { // 멤버변수 선언 String name; // 기본생성자 ParentClass(){ this.name = "자바"; } // 속성함수 public String getName() { return name; } public void setName(String name) { this.name = name; } } ❶ S..

백엔드/JAVA 2023.05.12

MVC 패턴 개념

MVC ( Model - View -Controller ) 사용자 인터페이스로, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴 - Model : 데이터와 관련된 부분 → 백그라운드에서 동작하는 비즈니스 로직 ( 데이터 ) 처리 - View : 사용자한테 보여지는 UI부분 → 정보를 화면으로 보여주는 역할 - Controller : Model과 View의 중개자 역할 → 사용자의 입력 처리와 전반적인 프로그램 흐름 제어 ( 첫날 배웠던 개념에 이어서 ) - DAO ( Data Access Object ) : 데이터베이스의 data에 접근하기 위한 객체로, 데이터베이스에 접근하기 위한 로직과 비즈니스 로직을 분리하기 위해 사용함 · 비즈니스 로직 ( Business Logic ) :..

백엔드/JAVA 2023.05.11

객체 지향 프로그래밍 이론(3) 및 주사위 게임 예제 실습

메소드 오버로딩 ( 어제 배운 내용에 이어서 ) - 메소드 오버로딩 ( overloading ) : 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것 → 목적 ) 매개값을 다양하게 받아 처리하기 위함 · 조건 ① 메서드 이름이 같아야 함 ② 매개변수의 개수 또는 타입이 달라야 함 ③ 반환 타입은 관계없음 · 오버로딩된 메소드를 호출할 경우, JVM이 매개값의 타입을 보고 호출할 메서드 선택 JVM은 반환타입을 보고 메소드를 선택하지 않기 때문에 반환타입은 고려 사항이 아님 package extend_class; public class CheckReturnClass { public void add(int x, int y) { System.out.printf("\n%d + %d..

백엔드/JAVA 2023.05.09

접근제어자 및 객체 지향 프로그래밍 (2)

접근 제어자 - 접근 제어자의 목적 : 멤버 또는 클래스에 사용 → 해당 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할 - 접근 범위가 넓은 쪽에서 좁은 쪽의 순 : public > protected > (default) > private ① public : 접근 제한 없음 ② (default) : 같은 패키지 내에서만 접근 가능 → 접근 제어자가 지정되어 있지 않은 경우에 해당 ③ protected : 같은 패키지 내 또는 다른 패키지의 자손 클래스에서 접근 가능 ④ private : 같은 클래스 내에서만 접근 가능 캡슐화 ( encapsulation ) - 외부로부터 데이터를 보호하기 위해 멤버 변수의 값에 직접적으로 접근하지 않은 것이 보안상 좋음 - 데이터가 유효한 값을 유지하도록,..

백엔드/JAVA 2023.05.08

콘솔창에 메뉴 만들기 예제 실습 및 이론

main() 메소드 내 메뉴 생성 ▶ console창에 출력할 내용 ----- #메뉴# ----- 1. 커피 2. 라떼 3. 녹차 4. 끝 메뉴 선택해주세요^_^ 메뉴를 키보드로부터 선택 선택한 메뉴에 따라 기능 실행 1번 메뉴 선택 -> "커피를 선택하셨습니다." 2번 메뉴 선택 -> "라떼를 선택하셨습니다." 3번 메뉴 선택 -> "녹차를 선택하셨습니다." 4번 메뉴 선택 -> "감사합니다." 메뉴에 없는 선택을 할 경우 -> "메뉴에서 선택해주세요." ▷ 내가 짠 코드 package menu; import java.util.Scanner; public class MyMenu { public static void main(String[] args ) { // 1) 배열을 이용한 메뉴판 출력 Strin..

백엔드/JAVA 2023.05.04

객체 지향 프로그래밍 이론(1)

클래스 선언 - 클래스명 작성 규칙 ① 하나 이상의 문자로 구성 ② 첫 글자에는 숫자가 올 수 없음 ③ '$', '_'외의 특수문자 사용 불가 ④ 자바 키워드 사용 불가 - 보통 하나의 소스파일에 하나의 클래스만을 정의하지만, 둘 이상의 클래스를 정의하는 것도 가능 단, 소스파일의 이름(.java)은 반드시 public class의 이름과 일치해야 함 ( 소스파일 내에 public class가 없는 경우, 소스 파일의 이름은 어떤 클래스 이름을 사용해도 무관 ) - 클래스 이름을 고쳐야 될 때 ① Package Explorer 뷰의 파일 클릭 → 마우스 오른쪽 클릭 ② Refactor → Rename : 새로운 이름 설정 ③ next 눌러서 확인 → Finish 객체 생성과 클래스 변수 - 클래스 선언은..

백엔드/JAVA 2023.05.03

가위, 바위, 보 게임 구현하기 예제 실습

가위, 바위, 보 게임 구현하기 package game; import java.util.Random; import java.util.Scanner; public class RockPaperScissorGame1 { public static void p (String msg) { System.out.print(msg); } public static void main(String[] args) { String [] rockPaperScissor = {"주먹", "보","가위"}; int rockPaperScissorSize = rockPaperScissor.length; // -> 유지보수를 위해 숫자보다는 배열의 길이를 변수 또는 상수에 저장해서 사용 // 상수 선언 : 변수 명 앞에 final 붙이기 /..

백엔드/JAVA 2023.05.02

기본 계산기 만들기 예제 실습

기본 계산기 만들기 package calc; public class CalcEx { public static void main( String [] args) { // main 메소드에서 각각의 메소드를 호출하기 int x = 100; int y = 50 ; int result ; result = add(x, y); System.out.printf("%d + %d = %d", x, y, result ); display ( result ); result = sub(x, y); System.out.printf("%d - %d = %d", x, y, result ); display ( result ); result = mul(x, y); System.out.printf("%d * %d = %d", x, y, r..

백엔드/JAVA 2023.05.01

1주차 ( ch3~ ch4 ) 이론 추가

Ch03. 연산자 - 연산식은 반드시 하나의 값을 산출, 값 대신에 연산식 사용 가능 - *, /, % : 우선순위 동일 → 왼쪽에서 오른쪽 방향으로 연산 100 * 2 / 3 % 5 = 1 - 복잡한 연산식에는 괄호( )를 사용해서 우선순위를 정하자 - 단항 연산자 중 부호 연산자 ( +, - ) : + 는 부호 유지 / - 는 부호 반대로 변경 ※ 주의 ) 부호 연산자의 결과 = int 타입 → byte 타입 변수를 부호 연산하면 int타입으로 변환되므로 int 타입 변수에 저장해야 함 - 잘못된 코딩 - byte b = 100 ; byte result = -b ;// 컴파일 에러 - 올바른 코딩 - byte b = 100 ; i..

백엔드/JAVA 2023.04.29