728x90

🦁 걸어봐 위엄 라잌어 라이옹 12

[대학교멋사🦁/OOD] 5. 의존과 DI(의존 주입)

1. 의존하다 기능 구현을 위해 다른 구성 요소를 사용하는 것. ex) 객체 생성, 메소드 호출, 데이터 사용 등 의존은 변경이 전파될 가능성이 있음을 의미 내가 의존하는 대상이 변경되면 나도 바뀔 가능성이 존재 == 의존하는 대상이 변경되면 의존받는 대상도 바뀔 가능성이 존재 ex) 호출하는 메소드의 파라미터 변경 ex) 호출하는 메소드가 발생할 수 있는 exception 타입 추가 (예외 처리) 2. 순환 의존 A->B->C->A의 형태로 의존하는 관계. # 문제점 변경 연쇄 전파 가능성 존재. => 왠만하면 클래스, 패키지, 모듈 등의 모든 수준에서 순환의존이 없도록 구현하도록 하자. Q. 의존하는 대상이 많다면? A,B,C,D,E,F를 의존하는 X가 존재한다고 할때 X는 의존하는 애들이 바뀔 때 ..

[대학교멋사🦁/OOD] 4. 기능과 책임 분리

1. 기능 분해 하나의 기능은 여러가지의 하위 기능으로 분해할 수 있다. 기능을 분류하고 각 객체에게 기능 구현의 책임을 제공한다. 분리한 하위 기능을 통해서 전체 기능을 구현하게 됨 2. 문제 클래스나 메소드의 크기가 증가할 경우 절차지향에서 마주하였던 문제가 또 다시 발생 큰 클래스 : 많은 필드를 많은 메소드가 공유 큰 메소드 : 많은 변수를 많은 코드가 공요 여러 기능이 한 클래스 및 메소드에 섞에 있을 가능성이 존재한다. => 데이터를 공유하게 됨으로써 코드를 수정하기 어려움을 겪게 됨 그럼 어떻게 해야 할까? 책임에 따라 알맞게 코드를 분리할 필요가 있다. 3. 책임에 따른 클래스 분배 분리 방법 패턴적용 전형적인 역할 분리 ex) 웹 : 컨트롤러, 서비스, DAO / 복잡한 도메인 : 엔티티..

[대학교멋사🦁/OOD] 3. 상속 보다 조립

대개 상위 클래스의 기능을 재사용, 확장하는 방법으로 활용 # 단점 상위 클래스 변경의 어려움 존재 상위클래스의 변경이 모든 하위클래스에 영향을 미침 앞으로 어떤 하위클래스가 추가될 지 모르기에 영향력의 크기가 점점 증가 캡슐화가 약해짐 하위클래스는 상위클래스가 어느정도 어떠한 동작을 하는지를 알아야 하는 경우가 발생 => 상위클래스는 하위클래스에게 캡슐화의 의미가 약해지고이따지요 클래스의 불필요한 증가 새로 클래스가 생성될 때마다 또 다른 하위 크래스가 생성 어떤 클래스를 상속받아서 구현을 진행해야하는지 불명확한 상태가 발생하기도 함 상속 오용 상속받은 메소드의 오용이 발생 # 그럼 워떠케? 조립하자!! # 조립(Composition) 여러 객체를 묶어 더 복잡한 기능을 제공 보통 필드로 다른 객체를 ..

[대학교멋사🦁/OOD] 2. 다형성 추상화

1. 다형성(Polymorphism)이란? 여러(poly) 모습(morph)을 갖는 것 객체 지향에서는 한 객체가 여러 타입을 갖는 것 한 객체가 여러 타입의 기능을 제공 타입 상속으로 다형성 구현 하위 타입은 상위 타입도 가능 : 여러 타입을 가질 수 있음 2. 추상화(Abstraction) 데이터나 프로세스 등을 의미가 비슷한 개념이나 의미있는 표현으로 정의하는 과정 # 추상화 방식 특정한 성질 추출 : 사용자의 Id, 이름, 이메일 추출 공통성질 추출(일반화) : 다른 모델명을 가진 같은 프린터기 == 프린터 # 타입 추상화 여러 구현 클래스를 대표하는 상위 타입 도출 흔히 인터페이스 타입으로 추상화 추상화 타입과 구현 클래스는 타입 상속으로 연결 추상화한 타입은 interface로 대개 표현. 공..

[대학교멋사🦁/OOD] 1. 객체 | 캡슐화

1. 서론 2. 절차지햔 VS 객체지햔 3. 객체 4. 캡슐화 1. 서론 # 소프트웨어를 유지보수하는 이유 변화하는 세계에서 여전히 유용한 소프트웨어가 되도록 하기 위함이다. ==> 바뀌어가는 환경에 알맞게 소프트웨어 또한 변경되어야 한다. ??? 낮은 비용으로 소프트웨어를 변화시키기 위한 방법에는 어떤 것이 있을까? 객체지향 프로그래밍 = 캡슐화 + 다형성(추상화) 2. 절차 지향 vs 객체 지향 # 절차지향 절차 지향의 장점 코드 구현 시 작성하기 쉽고 시간이 적게 소요됨 절차 지향의 단점 대개 위에서 선언한 data 값을 아래에서 공유하는 방식을 사용 코드의 중복 사용 및 데이터 공유의 현상이 발생 코드 수정의 어려움을 야기 => 비용적으로 좋지 않음. # 객체지향 객체지향의 특징 데이터와 프로시저..

[대학교멋사🦁/스터디] #2 Git | 추상클래스, 인터페이스 | SOLID 원칙

Q1. Git이란? 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를 효과적으로 관리할 수 있게 해주는 무료 공개소프트웨어. Git은 버전 관리 시스템(==형상관리도구) 중 하나로 Git Repository라고 불리는 데이터 저상소에 소스 코드 등을 넣어서 이용 개발자간의 협업 및 전체 개발 소스 공유를 위해 프로그램의 버전 관리가 필요 => 이를 관리해주는 것이 GIt 깃허브란? Git 호스팅 사이트 중 하나 내 로컬 저장소와 원격 저장소를 연결하여 파일을 백업하거나 관리 Git의 특징 3.1 Distributed development Git repository를 인터넷 상에서 제공하는 서비스(호스팅 서비스) == Github 분산형 관리 시스템 이러한 변경은 추가개발지점(branch)을 가져와, 로..

[대학교멋사🦁/JAVA] Assignment_2회차_3

학생의 성적을 관리하는 프로그램인 StudentManager은 인터페이스입니다. 이 인터페이스를 분석하여 Student class와 StudentManager의 구현체를 완성하세요 조건 : list와 인터페이스를 활용하여 과제를 완성합니다. # StudentManager : Interface package week2.assignment_3; public interface StudentManager { void addStudent(Student student); void updateStudent(String name, double score); void deleteStudent(String name); void printAllStudents(); } # Student : class package week2..

[대학교멋사🦁/JAVA] Assignment_2회차_2

멋쟁이사자처럼 로그인 프로그램입니다. 1. 로그인 2. 회원가입 3. 종료 의 기능을 하는 프로그램을 제작합니다. 조건 : map을 활용하여 과제를 완성합니다 package week2.assignment_2; import java.util.*; public class likelion_201902679_KHJ_02 { private Map userInfoList = new HashMap(); static Scanner sc = new Scanner(System.in); public void createNewUser(String id, String pw){ // 새로운 사용자 생성 userInfoList.put(id,pw); } public boolean login(){ // login 기능 String i..

[대학교멋사🦁/JAVA] Assignment_2회차_1

Collection 을 사용하여 여러가지 간단한 문제를 구현해 보도록 합니다 뚜둔. 1. 다섯 명을 입력받고 이 씨 성인 사람을 출력하는 프로그램입니다 조건 : list을 활용하여 과제를 완성합니다. package week2.assignment_1; import java.util.*; public class assignment_1_1 { // 이씨 성을 가진 사람을 찾는 메소드 public static void findLees(List list){ for(String name : list){ if(name.contains("이")){ System.out.println(name); } } } public static void printProgramStart(){ System.out.println("이 씨 ..

[대학교멋사🦁/스터디] #1 Collection과 Class

Q1. JAVA의 Collection이란? Collection 이란? JAVA에서 제공하는 데이터 구조를 다루는 데 사용되는 프레임 워크 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스와 인터페이스의 집합 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것 Collection을 쓰는 이유는? 데이터를 효율적으로 관리하기 위함 일반적인 자료 구조를 구현한 많은 클래스 제공 : 개발자가 직접 구현할 필요 X Collection 종류 List 순서가 있는 데이터의 모음. 중복된 요소를 허용합니다. ex) Vector, ArrayList, LinkedList, Stack Set 순서가 없는 데이터의 모음입니다. 중복된 요소를 허용하지 않..

728x90