프로그래밍 198

오라클 join설명

Why Join ? DB를 설계할 때 정규화(Normalization)가 기본 개념이듯이, SQL에서는 서로 다른 테이블들에 흩어져 있는 데이터를 주어진 조건에 의해 연결하는 조인(Join)이 기본 개념이라 할 수 있다. 예를 들어, 서울에 위치한 부서명과 소속된 사원명을 출력하라는 쿼리가 있을 때에 부서명은 DEPT 테이블에 있고, 사원명은 EMP 테이블에 있다. 따라서 조인이 필요할 것이고, 조인에 사용되는 연결조건은 소속관계이므로 DEPT 테이블의 부서번호와 EMP 테이블의 부서번호가 동일하다는 조건이 될 것이다. SELECT d.dname, e.ename FROM dept d, emp e WHERE d.loc = ‘서울’ AND d.deptno = e.deptno ß 조인조건 Join Order ..

Net8 configuration Assistant로 오라클 네트워크 서비스 생성

이제 직접 오라클 클라이언트에서 서버에 접속하기 위해서 Net8 Configuration Assistant를 이용해서 서비스를 하나 생성하겠습니다. 윈도우 시작메뉴에서 프로그램 -> Oracle -> Network Administration -> Net8 Configuration Assistant 를 실행 시킵니다. 1. Net8 Configuration Assistant 시작 화면 Net8 Configuration Assistant를 시작하면 아래와 같은 화면이 나옵니다. 로컬네트 서비스 이름 구성을 선택하고서 다음 버튼을 클릭 합니다. 2. 네트워크 서비스 이름 관리 화면 추가 버튼을 클릭해서 새로운 서비스를 생성 합니다. 수정은 기존의 서비스를 수정하고, 삭제를 누르면 서비스가 삭제 됩니다. 3. ..

리스너(LISTENER)와 listener.ora, tnsnames.ora파일

오라클 클라이언트에서 서버에 접속하기 위해서는 오라클 서버에 리스너(LISTENER)가 실행되어 있어야 됩니다. ◈ 리스너(Listener)란? - 오라클 리스너는 네트워크를 이용하여 클라이언트에서 오라클 서버로 연결하기 위한 오라클 네트워크 관리자 입니다. - 오라클에서 네트워크를 통한 연결은 모두 리스너가 담당하며 리스너와 연결되기 위해서는 클라이언트에 오라클 NET8이 설치되어 있고 이를 통해 오라클 서비스명이라는 것을 만들어 접속해야 합니다. - 오라클 서버에서 리스너를 시작시켜줘야 클라이언트들이 접속할 수 있습니다. - lsnrctl명령어로 리스너를 관리 할 수 있습니다. -- 리스너 시작하기 C:\>lsnrctl LSNRCTL for 32-bit Windows: Version 8.1.6.0.0..

객체지향 분석 설계(OOA&D) 개발방법

1. 여러분의 소프트웨어가 고객이 원하는 기능을 하도록 하세요. 2. 객체지향의 기본원리를 적용해서 소프트웨어를 유연하게 하세요. 3. 유지보수와 재사용이 쉬운 디자인을 위해 노력하세요. 고객은 프로그램이 동작할 때 만족스러워 합니다. 고객은 프로그램이 계속 잘 동작할 때 만족스러워 합니다. 고객은 프로그램이 업그레이드가 가능할 때 만족해 합니다. 프로그래머는 자신의 프로그램이 재사용될 수 있을 때 만족스러워 합니다. 프로그래머는 자신의 프로그램이 유연할 때 만족스러워 합니다.

응집도(cohesion)란 ?

응집도란 한 클래스 또는 모듈이 특정 목적 또는 역할을 얼마나 일관되게 지원하는지를 나타내는 척도라고 할 수 있다. 어떤 모듈 또는 클래스의 응집도가 높다는 것은 일련의 서로 연관된 기능이 묶여있다는 것을, 응집도가 낮다는 것은 서로 상관 없는 기능들이 묶여있다는 것을 뜻한다. 사실 응집도는 단일 역할 원칙에서만 쓰이는 용어는 아니고, 좀더 광범위한 용도로 쓰이는 용어다. 하지만 그 둘은 서로 밀접하게 연관되어 있다. 이 원칙(단일 역할 원칙)을 잘 따르는 클래스는 두 개 이상의 역할을 맡고 있는 클래스에 비해 응집도가 높고, 관리하기도 더 용이한 편이다. ★이 포스트가 유용하셨다면 javaiyagi블로그를 구독하세요

개발(설계,디자인) 할 때 유의사항

070731 ① 문제를 해결하면서 새로운 문제를 만들지 말자. ② 두번째 단계(객체지향설계)로 가기전에 첫번째 단계(고객의 요구사항 구현)를 끝내는 것이 왜 그렇게 중요한가? : 프로그램이 제대로 동작하게 만들려면 그 프로그램을 여러 번 수정하게 될 것이다. 기본 기능을 구현하기 전에 설계에 너무 신경을 쓰면 쓸데 없는 시간 낭비가 될 수 있다. 왜냐하면 클래스들과 메소드들에 새로운 기능을 추가할 때다 설계의 많은 부분이 바뀌어야 하기 때문이다. 070801 ① 중복 코드를 볼 때마다 캡슐화 할 곳이 있는지를 찾아보라 !

"위대한 소프트웨어" 에 대해 서로 다른 의견.

고객중심의 프로그래머는 이렇게 말한다. "위대한 소프트웨어는 고객이 바라는 것을 수행하는 소프트웨어이다. 고객이 소프트웨어를 이상하게 사용하더라도, 소프트웨어가 멈추거나 예상치 못한 결과를 나타내지 않는 소프트웨어 말이다." 객체지향 프로그래머는 다음과 같이 말한다. "위대한 소프트웨어는 객체지향으로 만들어진 코드이다. 그렇게 하면 중복된 코드가 적고, 각 객체가 자신의 행동을 통제한다. 설계가 견고하고 유연해서 확장 또한 쉽다." 설계를 중시하는 프로그래머는 다음과 같이 말한다. "위대한 소프트웨어는 이미 입증된 디자인 패턴과 원리를 사용해서 만든 소프트웨어이다. 객체가 느슨하게 연결되로록 하고, 코드를 확장에는 열려 있으면서 수정에는 닫혀있게 유지한다.(디자인패턴 - OCP원칙 참조) 또한, 이렇게 ..

템플릿 메소드 패턴 II

템플릿 메소드 패턴의 정의 - 템플릿 메소드 패턴에서는 메소드에서 알고리즘의 골격을 정의합니다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있습니다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의할 수 있습니다. 이 패턴은 간단하게 말하자면 알고리즘의 틀을 만들기 위한 것이다. 틀이란 일련의 단계들로 알고리즘을 정의한 메소드이다. 여러 단계 가운데 하나 이상이 추상 메소드로 정의되며, 그 추상 메소드는 서브클래스에서 구현된다. 이렇게 하면 서브클래스에서 일부분을 구현할 수 있도록 하면서도 알고리즘의 구조는 바꾸지 않아도 되도록 할 수 있다.

템플릿 메소드 패턴 I

* 알고리즘 캡슐화 public abstract class CaffeineBeverage{ final void prepareRecipe(){ // 템플릿내에서 알고리즘의 각 단계는 메소드로 표현된다. boilWater(); brew(); pourInCup(); adCondiments(); } abstract void brew(); // 서브클래스에서 처리되는 메소드도 있고 abstract void addCondiments(); void boilWater(){ // 어떤 메소드는 이 클래스 내에서 처리되기도 한다... System.out.println("물 끓이는 중"); } void pourInCup(){ System.out.println("컵에 따르는 중"); } } public class Tea ex..