Rechercher : dans
Par :

[java] Méthode

Dernière réponse le 13 jun 2006 à 09:07:38 Century, le 12 jun 2006 à 18:26:18 
 Signaler ce message aux modérateurs

Bonjour,

j'ai un souci concernant le codage des méthodes car je ne sais pas comment m'y prendre.

Pourriez-vous m'aider

Merci

import java.util.regex.Pattern;

public interface QueryFactory {
 
  public Query query(CharSequence word);
  
  public Query query(Pattern pattern);
  
  public Query or(Query query1,Query query2);
  
  public Query and(Query query1,Query query2);
}


la classe qui l'implémente
public class QueryFacoryImpl implements QueryFactory {
 
  public Query query(CharSequence word) {
     // construction d'un objet query en fonction de word
     //return query;
  }
  
  public Query query(Pattern pattern) {
     // construction d'un objet query en fonction de pattern
     //return query;
  }
  
  public Query or(Query query1,Query query2) {
     // construction d'un objet query en fonction de query1 et query2
     //return query;
  }
  
  public Query and(Query query1,Query query2) {
     // construction d'un objet query en fonction de query1 et query2
     //return query;
  }
}

Meilleures réponses pour « [java] Méthode » dans :
Le mot-clé static ou les attributs et méthodes de classe en POO Voir(NOTE: Cet article explique la signification du mot-clé static au sein d'une classe. La signification de "static" en C n'a par exemple rien à voir.) Vous êtes débutant en programmation orientée objet. En Java, en C++...ou que sais-je encore,...
Java: Les méthodes VoirLa notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...
Java - Premier programme VoirPremière application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Javascript - L'objet Date VoirLes particularités de l'objet Date L'objet Date permet de travailler avec toutes les variables qui concernent les dates et la gestion du temps. Il s'agit d'un objet inclus de façon native dans Javascript, et que l'on peut toujours utiliser. La...

1

choubaka, le 13 jun 2006 à 07:44:06

Salut

je comprends pas bien ce que tu veux qu'on fasse ...

tu veux qu'on écrive ton code ???

il manque beaucoup trop d'éléments pour qu'on puisse le faire

Chouba,
Pochard d'assaut .. 

Répondre à choubaka

2

 Century, le 13 jun 2006 à 09:07:38

Bonjour,

Désolé, c'est vrai que j'ai mis très peu d'éléments pour être aidé

J'avais codé un exo semblable à celui qui m'est demandé de faire, mais je n'arrive pas à faire les modifications qui s'imposent

J'aurais principalement besoin d'aide concernant les méthodes Query et QueryFactory (qui permettent de faire la recherche) que je n'arrive pas à adapter

L'exo consiste à chercher des mots ou expressions régulières dans un fichier en utilisant le ET(&) et le Ou(|) .

Si vous pouviez m'aider s'il vous plait car j'essaye sans succès

Merci


Les quelques interfaces à implémenter(je ne mets que celles qui me posent problèmes)

Cette interface sert lancer la recherche

public interface Query {
  public Iterable<? extends Result> execute();

  public Iterable<? extends Result> execute(int maxCount);
}


Cette interface sert à utiliser les &, |, les expressions rationnelles ou les expressions "simples"
import java.util.regex.Pattern;

public interface QueryFactory {
 
  public Query query(CharSequence word);
  
  public Query query(Pattern pattern);
  
  public Query or(Query query1,Query query2);
  
  public Query and(Query query1,Query query2);
}



Ce que j'avais codé mais qu'il faut adapter
je tasse un peu le code dans mon post pour des raisons de place...)

J'ai une interface IMatcher qui se charge de dire si le texte donné est "bon" :
public interface IMatcher
{
	public boolean matches(String value);
}


Ensuite j'ai plusieurs Matchers spécialisés qui implémentent cette interface. Certains sont des matchers "simples" (qui travaillent sur une simple chaîne de référence) :
public class ContainsMatcher implements IMatcher
{
	private final String reference;	
	
	public ContainsMatcher(String reference)
	{	this.reference = reference;
	}

	public boolean matches(String value)
	{	return value.contains(reference);
	}
}


Et certains sont "composites" (ils utilisent d'autres matchers pour déterminer si le texte est "bon") :
public class AndMatcher implements IMatcher
{
	private final IMatcher matcher1;
	private final IMatcher matcher2;

	public AndMatcher(IMatcher matcher1, IMatcher matcher2)
	{
		this.matcher1 = matcher1;
		this.matcher2 = matcher2;
	}

	public boolean matches(String value)
	{	return ( matcher1.matches(value) && matcher2.matches(value) );
	}
}


Ensuite, j'ai une MatcherFactory, à qui on donne l'expression de recherche ("& titi toto"), et qui se charge de l'analyser et de construire la hiérarchie des Matchers correspondante :
public class MatcherFactory
{
	// C'est la méthode publique que notre programme va appeler
	public static IMatcher createMatcher(String pattern)
	{
		ArrayList<String> expList = new ArrayList<String>(Arrays.asList(pattern.split("\\s+")));
		return getSpecializedMatcher(expList);
	}
		
	// Méthode récursive, qui lit le premier élément de la liste des expressions, et
	// renvoie le Matcher correspondant.
	private static IMatcher getSpecializedMatcher(List<String> expList)
	{
		String exp = expList.remove(0);
		if ("&".equals(exp))
		{
			IMatcher operand1 = getSpecializedMatcher(expList);
			IMatcher operand2 = getSpecializedMatcher(expList);
			return new AndMatcher(operand1, operand2);
		}
		else if ("|".equals(exp))
		{
			IMatcher operand1 = getSpecializedMatcher(expList);
			IMatcher operand2 = getSpecializedMatcher(expList);
			return new OrMatcher(operand1, operand2);
		}
		else if (exp.startsWith("@"))
		{	return new RegexMatcher(exp.substring(1));
		}
		else if (exp.startsWith("!"))
		{	return new ExactMatcher(exp.substring(1));
		}
		else
		{	return new ContainsMatcher(exp);
		}		
	}
}

Répondre à Century
Collection CommentÇaMarche.net