relación entre objetos

Hay cuatro relaciones entre los objetos/clases de Java: dependencia, asociación, composición, agregación, herencia y realización.

1. Dependencia

Dependencia: La funcionalidad de un objeto depende de otro objeto.

  • Analogía: los humanos dependen de la comida y el aire para sobrevivir

  • Incorporación: el dependiente se incorpora como la llamada de las variables locales , parámetros y métodos estáticos del dependiente.

  • Ejemplo:

    UML:

    código:

    public class Human {
          
          
        public void live(Food food) {
          
          
            Air.breath();
            food.eat();
        }
    }
    
    class Air {
          
          
        public static void breath() {
          
          
            System.out.println("呼吸...");
        }
    }
    
    class Food {
          
          
        public void eat() {
          
          
            System.out.println("进食...");
        }
    }
    

2. Asociación

Asociación (Association): Una clase necesita conocer la situación (propiedades, métodos) de otra clase, que puede ser bidireccional o unidireccional.

  • Analogía: los humanos necesitan saber si la comida ha caducado al comer

  • Reflexión: el objeto asociado generalmente se usa como una variable miembro

  • Ejemplo:

    UML:

    código:

    public class Human {
          
          
    
        private Food food;
        public void judge() throws ParseException {
          
          
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
            if (format.parse(food.getExpiration()).compareTo(new Date()) > 0 ) {
          
          
                food.eat();
            } else {
          
          
                System.out.println("食物已经过期");
            }
        }
    
        public Human(Food food) {
          
          
            this.food = food;
        }
    }
    
    class Food {
          
          
    
        private String expiration;
    
        public void eat() {
          
          
            System.out.println("食物安全,可以食用");
        }
    
        public Food() {
          
          
            this.expiration = "2023-04";
        }
    
        public String getExpiration() {
          
          
            return expiration;
        }
    }
    

3. Agregación

Agregación: Una fuerte relación de asociación (has-a), los objetos de la asociación están al mismo nivel, y la agregación es la relación entre el todo y los componentes individuales. Los individuos pueden ser compartidos entre diferentes totalidades , por ejemplo, las moléculas de hidrógeno también están compuestas por átomos de hidrógeno.

  • Analogía: una molécula de agua está formada por átomos de hidrógeno y oxígeno.

  • Realización: el objeto agregado se usa como una variable miembro

  • Ejemplo:

    UML:

    código:

    public class WaterMolecule {
          
          
    
        private HydrogenAtom2 hydrogenAtom2;
        private OxygenAtom atom;
    
        public WaterMolecule(HydrogenAtom2 hydrogenAtom2, OxygenAtom atom) {
          
          
            this.hydrogenAtom2 = hydrogenAtom2;
            this.atom = atom;
        }
    }
    
    class OxygenAtom {
          
          
    
    }
    
    class HydrogenAtom2 {
          
          
    
    }
    

4. Combinación

Composición: Una relación de asociación más fuerte (es-a) que la agregación. La relación de composición requiere que el objeto que representa el todo en la relación de agregación sea responsable del ciclo de vida completo del objeto que representa al individuo/parte, por lo que la relación de composición no puede ser compartido _ Si el objeto que representa el todo es destruido o destruido, entonces el objeto que representa al individuo también debe ser destruido o destruido.

  • Analogía: corazón humano y humano, cerebro.

  • Realización: objetos individuales como variables miembro

  • Ejemplo:

    UML:

    código:

    public class Human {
          
          
        private Brain brain;
        private Heart heart;
        private String status;
    
        public void sustainLife() {
          
          
            brain.control(status);
            heart.beat(status);
        }
    
        public Human(Brain brain, Heart heart, String status) {
          
          
            this.brain = brain;
            this.heart = heart;
            this.status = status;
        }
    }
    
    class Brain {
          
          
        public void control(String status) {
          
          
            if (status.equals("0")) {
          
          
                System.out.println("脑死亡");
            } else {
          
          
                System.out.println("大脑控制身体");
            }
        }
    }
    
    class Heart {
          
          
        public void beat(String status) {
          
          
            if (status.equals("0")) {
          
          
                System.out.println("心跳停止");
            } else {
          
          
                System.out.println("心脏跳动");
            }
        }
    }
    

5. Herencia

Herencia (se extiende): La relación más acoplada entre objetos es la relación entre padre e hijo.

  • Analogía: padre e hijo
  • Realización: subclase (clase derivada) y clase principal (clase base, superclase)
  • Ejemplo:

    UML:

    código:
    public class Tom {
          
          
    	public void farm() {
          
          
    		System.out.println("种地");
    	}
    }
    
    class Jack extends Tom {
          
          
    	@Override
    	public void farm() {
          
          
    		System.out.println("种地");
    	}
    
    	public void makeWine() {
          
          
    		System.out.println("酿酒");
    	}
    }
    

6. Lograr

Implementa: La relación entre la interfaz y la clase de implementación.La clase de implementación necesita implementar todos los métodos declarados en la interfaz.

  • Ejemplo:

    UML:

    código:

    public interface Animal {
          
          
        void live();
    }
    
    class Cat implements Animal {
          
          
        @Override
        public void live() {
          
          
            System.out.println("生存");
        }
    } 
    

Supongo que te gusta

Origin blog.csdn.net/m0_54355172/article/details/129030090
Recomendado
Clasificación