언어
-
객체 지향과 디자인 패턴 - 다형성과 추상 타입언어/객체지향 2023. 8. 13. 15:33
- 객체 지향의 장점은 구현 변경의 유연함 - 캡슐화를 통해 내부 구현의 유연함을 얻을 수 있었음 - 또 다른 유연함은 추상화를 통해 얻을 수 있다. * 객체 지향의 사실과 오해 -> 추상화의 방법 1. 공통점(객체 구분) 2. 일반/서브타입 나누기 (부모/자식) 1. 상속 - 상속은 기존 클래스의 기능을 그대로 사용하면서 확장할 수 있게 한다. - 오버라이드 2. 다형성과 상속 - 다형성이란 한 객체가 여러 모습을 가진다 -> 여러 기능(책임)을 수행할 수 있다. - 자바와 같은 정적 타입 언어는 상속을 통해서 다형성을 구현한다. 3. 인터페이스 상속 및 구현 - 인터페이스 상속과 구현 상속으로 구분 할 수 있다. - 인터페이스 상속: 타입(개념상 인터페이스) 정의만 상속받는 것 (추상클래스, 인터페이..
-
객체지향과 디자인패턴 2언어/객체지향 2023. 8. 13. 14:09
1.1 절차지향 - 데이터를 조작하는 코드를 별도로 분리해서 함수나 프로시저와 같은 형태로 만듦 - 각 프로시저들이 데이터를 조작하는 방식 - 순서에 따르는 것이 아니라, 프로시저에 따른 프로그래밍이다. ex) 시험 성적 관리 프로그램 - 평균 계산, 화면출력 등의 프로시저가 존재할 것이고 각 프로시저는 데이터를 공유할 것이다. - 이 과정에서 절차지향적 프로그래밍은 데이터를 중심으로 표현하게 된다. - 절차지향의 문재 > 데이터 타입이나 의미 변경시 수정해야하는 프로시저가 증가 > 같은 데이터를 프로시저들이 서로 다른 의미로 사용하는 경우가 많다. > 절차지향의 전형적인 문제는 한 곳을 수정하면 다른 여러 곳에서 문제가 발생하는 것 1.2 객체지향 - 데이터와 그와 관련된 프로시저를 객체라는 단위로 묶..
-
객체지향과 디자인패턴 1언어/객체지향 2023. 8. 11. 11:05
1. 지저분한 코드 최초 요구사항: 메뉴영역에 메뉴1과 메뉴2가 있다. 공통영역에 버튼 1이 있다. - 메뉴를 누르면 각 메뉴로 화면전환 -버튼을 누르면 각 메뉴에 맞는 화면처리를 한다. public class Application implements OnClickedListener { private Menu menu1 = new Menu("menu1"); private Menu menu2 = new Menu("menu2"); private Button button1 = new Button("bu1"); private String currentMenu = null; public Application(){ menu1.setOnClickListener(this); // 클릭시 이벤트 담당하는 클래스 등록 m..
-
객체지향의 사실과 오해 3언어/객체지향 2023. 8. 2. 11:59
훌륭한 메시지가 훌륭한 객체지향 설계의 기반임을 강조 객체의 자율성과 설계의 유연성은 어떤 메시지를 선택하느냐에 달렸다. 5. 책임과 메시지 5.1 자율적인 책임 > 설계의 품질을 좌우하는 책임 - 기능 구현을 위해 협력하고 그 과정에서 책임을 다하기 위해 자율적 행동 - 객체가 어떤 행동을 하는 유일한 이유는 메시지의 수신 (책임) > 자신의 의지에 따라 증언할 수 있는 자유 - 재판하라는 메시지에 자율적 책임을 다함 - 메시지 송신자는 어떤 방식으로 응답하는지는 관심이 없다. - 어떤 메시지를 전하는냐에 따라 자율성을 침해할 여지가 있다. - 충분히 자율적이기 위해선, 책임이 추상적일 필요가 있다(메시지가) > 너무 추상적인 책임 - 협력의 의도를 명확하게 표현하지 않는 것도 문제 - 너무 과도한 자..
-
객체지향의 사실과 오해 2언어/객체지향 2023. 8. 2. 10:30
3.타입과 추상화 (객체의 분류) - 지하철 지도를 통한 추상화 예시 - 정확성은 버리고 목적에 집중 3.1 추상화를 통한 복잡성 극복 - 추상화란 불필요한 부분을 도려내고, 본질이 드러나게 하는 과정 - 추상화는 목적에 의존적이다. 1. 구체적 사물의 공통점은 취하고 차이점은 버리는 일반화 (분류) 2. 중요한 부분을 강조하기 위해 불필요한 세부사항 제거 (일반화/특수화) 3.2 객체지향과 추상화 - 트럼프 예시에서 모든 각양각색의 트럼프 등장인물과 토끼를 트럼프와 토끼의 속성으로 분리 > 그룹으로 나누어 단순화 하기 > 개념 - 우리가 인식하는 다양한 사물이나 객체에 적용할 수 있는 아이디어나 관념을 의미 - 객체간 차이점을 의도적으로 무시하고 공통점을 강조한 취사선택 - 객체를 묶기 위한 그릇을 개..
-
객체지향의 사실과 오해언어/객체지향 2023. 8. 1. 14:35
1. 협력하는 객체들의 공동체 - 객체지향이란 실세계를 직접적으고, 직관적으로 모델링할 수 있는 패러다임 - 하지만, 이는 실세계를 모방하는 것을 의미하지 않는다. 고객을 만족시킬 수 있는 신세계를 창조하는 것에 가깝다. - 실세계와의 연관성은 객체의 자율성을 부여하고, 객체가 서로 메시지를 통해 서로 협력하는 객체지향의 연결완전성에서 찾아 볼 수 있다. 1.1 협력하는 사람들 - 커피를 주문하는 클라이언트, 주문을 받는 캐셔, 커피를 만드는 바리스타의 협력관계를 통해 객체지향을 엿볼 수 있다. - 협력 사이에 객체들은 각자의 역활과 수행해야할 책임이 있다. - 사람들 사이에서 일어나는 일처럼, 소프트웨어를 개발할 때도 협력,역할,책임은 중요한 의미를 가진다. > 요청과 응답으로 구성된 협력 - 협력이란..
-
Java - 일급컬렉션언어/JAVA 2023. 7. 25. 11:40
일급컬렉션이란 Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태 1.일급컬렉션 적용 규칙 - 일급컬렉션에는 컬렉션 외 다른 멤버변수 없어야한다. - 각 컬렉션은 자체로 포장돼 있음으로, 콜렉션과 관련된 동작 근거지가 마련됨 - 필터가 일급컬렉션 클래스에 일부가 된다. > 필터는 또한 스스로 함수 객체가 될 수 있다. Map map = new HashMap(); map.put("1","A"); //.. 이를 아래와 같이 클래스 안으로 묶음 public class GameRanking{ private Map ranks; public GameRanking(Map ranks){ this.ranks = ranks; } } List carList = new ArrayList(); pu..
-
Servlet-JSP MVC07 파일 수정하기언어/JAVA 2023. 7. 24. 21:23
- 파일 수정하기 - 파일 수정하기도 회원 가입시 첨부파일을 지정하는 것과 마찬가지로 - 파일 업로드하고 정보 수정 vs 파일 업로드 없이 정보 수정 - 파일 업로드하고 회원 정보 수정시 1. ajax로 먼저 파일을 업로드 시키고, 업로드 된 filename 콜백함수로 받아서 2. hidden타입 id= filename에 value를 return받은 filename으로 바꿔 둔 뒤에 3. 수정하기 누르면, 같이 넘어가도록 한다. 1. 뷰 쪽 수정 function update(){ if($("#file").val() != ''){ var formData = new FormData(); formData.append("file",$("input[name=file]")[0].files[0]); $.ajax({ ..